/*
PMP Mod
Copyright (C) 2006 jonny

Homepage: http://jonny.leffe.dnsalias.com
E-mail:   jonny@leffe.dnsalias.com

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/

/*
color space conversion done with the gu
*/


#include "pmp_gu.h"


unsigned int __attribute__((aligned(16))) pmp_gu_list[262144];


static unsigned char __attribute__((aligned(16))) color_space_conversion_y_put[16384] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 2, 2, 2, 0, 3, 3, 3, 0, 5, 5, 5, 0, 6, 6, 6, 0, 7, 7, 7, 0, 8, 8, 8, 0, 9, 9, 9, 0, 10, 10, 10, 0, 12, 12, 12, 0, 13, 13, 13, 0, 14, 14, 14, 0, 15, 15, 15, 0, 16, 16, 16, 0, 17, 17, 17, 0, 19, 19, 19, 0, 20, 20, 20, 0, 21, 21, 21, 0, 22, 22, 22, 0, 23, 23, 23, 0, 24, 24, 24, 0, 26, 26, 26, 0, 27, 27, 27, 0, 28, 28, 28, 0, 29, 29, 29, 0, 30, 30, 30, 0, 31, 31, 31, 0, 33, 33, 33, 0, 34, 34, 34, 0, 35, 35, 35, 0, 36, 36, 36, 0, 37, 37, 37, 0, 38, 38, 38, 0, 40, 40, 40, 0, 41, 41, 41, 0, 42, 42, 42, 0, 43, 43, 43, 0, 44, 44, 44, 0, 45, 45, 45, 0, 47, 47, 47, 0, 48, 48, 48, 0, 49, 49, 49, 0, 50, 50, 50, 0, 51, 51, 51, 0, 52, 52, 52, 0, 54, 54, 54, 0, 55, 55, 55, 0, 56, 56, 56, 0, 57, 57, 57, 0, 58, 58, 58, 0, 59, 59, 59, 0, 61, 61, 61, 0, 62, 62, 62, 0, 63, 63, 63, 0, 64, 64, 64, 0, 65, 65, 65, 0, 66, 66, 66, 0, 68, 68, 68, 0, 69, 69, 69, 0, 70, 70, 70, 0, 71, 71, 71, 0, 72, 72, 72, 0, 73, 73, 73, 0, 75, 75, 75, 0, 76, 76, 76, 0, 77, 77, 77, 0, 78, 78, 78, 0, 79, 79, 79, 0, 80, 80, 80, 0, 82, 82, 82, 0, 83, 83, 83, 0, 84, 84, 84, 0, 85, 85, 85, 0, 86, 86, 86, 0, 87, 87, 87, 0, 88, 88, 88, 0, 90, 90, 90, 0, 91, 91, 91, 0, 92, 92, 92, 0, 93, 93, 93, 0, 94, 94, 94, 0, 95, 95, 95, 0, 97, 97, 97, 0, 98, 98, 98, 0, 99, 99, 99, 0, 100, 100, 100, 0, 101, 101, 101, 0, 102, 102, 102, 0, 104, 104, 104, 0, 105, 105, 105, 0, 106, 106, 106, 0, 107, 107, 107, 0, 108, 108, 108, 0, 109, 109, 109, 0, 111, 111, 111, 0, 112, 112, 112, 0, 113, 113, 113, 0, 114, 114, 114, 0, 115, 115, 115, 0, 116, 116, 116, 0, 118, 118, 118, 0, 119, 119, 119, 0, 120, 120, 120, 0, 121, 121, 121, 0, 122, 122, 122, 0, 123, 123, 123, 0, 125, 125, 125, 0, 126, 126, 126, 0, 127, 127, 127, 0, 128, 128, 128, 0, 129, 129, 129, 0, 130, 130, 130, 0, 132, 132, 132, 0, 133, 133, 133, 0, 134, 134, 134, 0, 135, 135, 135, 0, 136, 136, 136, 0, 137, 137, 137, 0, 139, 139, 139, 0, 140, 140, 140, 0, 141, 141, 141, 0, 142, 142, 142, 0, 143, 143, 143, 0, 144, 144, 144, 0, 146, 146, 146, 0, 147, 147, 147, 0, 148, 148, 148, 0, 149, 149, 149, 0, 150, 150, 150, 0, 151, 151, 151, 0, 153, 153, 153, 0, 154, 154, 154, 0, 155, 155, 155, 0, 156, 156, 156, 0, 157, 157, 157, 0, 158, 158, 158, 0, 160, 160, 160, 0, 161, 161, 161, 0, 162, 162, 162, 0, 163, 163, 163, 0, 164, 164, 164, 0, 165, 165, 165, 0, 167, 167, 167, 0, 168, 168, 168, 0, 169, 169, 169, 0, 170, 170, 170, 0, 171, 171, 171, 0, 172, 172, 172, 0, 173, 173, 173, 0, 175, 175, 175, 0, 176, 176, 176, 0, 177, 177, 177, 0, 178, 178, 178, 0, 179, 179, 179, 0, 180, 180, 180, 0, 182, 182, 182, 0, 183, 183, 183, 0, 184, 184, 184, 0, 185, 185, 185, 0, 186, 186, 186, 0, 187, 187, 187, 0, 189, 189, 189, 0, 190, 190, 190, 0, 191, 191, 191, 0, 192, 192, 192, 0, 193, 193, 193, 0, 194, 194, 194, 0, 196, 196, 196, 0, 197, 197, 197, 0, 198, 198, 198, 0, 199, 199, 199, 0, 200, 200, 200, 0, 201, 201, 201, 0, 203, 203, 203, 0, 204, 204, 204, 0, 205, 205, 205, 0, 206, 206, 206, 0, 207, 207, 207, 0, 208, 208, 208, 0, 210, 210, 210, 0, 211, 211, 211, 0, 212, 212, 212, 0, 213, 213, 213, 0, 214, 214, 214, 0, 215, 215, 215, 0, 217, 217, 217, 0, 218, 218, 218, 0, 219, 219, 219, 0, 220, 220, 220, 0, 221, 221, 221, 0, 222, 222, 222, 0, 224, 224, 224, 0, 225, 225, 225, 0, 226, 226, 226, 0, 227, 227, 227, 0, 228, 228, 228, 0, 229, 229, 229, 0, 231, 231, 231, 0, 232, 232, 232, 0, 233, 233, 233, 0, 234, 234, 234, 0, 235, 235, 235, 0, 236, 236, 236, 0, 238, 238, 238, 0, 239, 239, 239, 0, 240, 240, 240, 0, 241, 241, 241, 0, 242, 242, 242, 0, 243, 243, 243, 0, 245, 245, 245, 0, 246, 246, 246, 0, 247, 247, 247, 0, 248, 248, 248, 0, 249, 249, 249, 0, 250, 250, 250, 0, 252, 252, 252, 0, 253, 253, 253, 0, 254, 254, 254, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 4, 4, 4, 0, 4, 4, 4, 0, 4, 4, 4, 0, 4, 4, 4, 0, 4, 4, 4, 0, 4, 4, 4, 0, 4, 4, 4, 0, 4, 4, 4, 0, 4, 4, 4, 0, 4, 4, 4, 0, 4, 4, 4, 0, 4, 4, 4, 0, 4, 4, 4, 0, 4, 4, 4, 0, 4, 4, 4, 0, 4, 4, 4, 0, 4, 4, 4, 0, 5, 5, 5, 0, 6, 6, 6, 0, 7, 7, 7, 0, 9, 9, 9, 0, 10, 10, 10, 0, 11, 11, 11, 0, 12, 12, 12, 0, 13, 13, 13, 0, 14, 14, 14, 0, 16, 16, 16, 0, 17, 17, 17, 0, 18, 18, 18, 0, 19, 19, 19, 0, 20, 20, 20, 0, 21, 21, 21, 0, 23, 23, 23, 0, 24, 24, 24, 0, 25, 25, 25, 0, 26, 26, 26, 0, 27, 27, 27, 0, 28, 28, 28, 0, 30, 30, 30, 0, 31, 31, 31, 0, 32, 32, 32, 0, 33, 33, 33, 0, 34, 34, 34, 0, 35, 35, 35, 0, 37, 37, 37, 0, 38, 38, 38, 0, 39, 39, 39, 0, 40, 40, 40, 0, 41, 41, 41, 0, 42, 42, 42, 0, 44, 44, 44, 0, 45, 45, 45, 0, 46, 46, 46, 0, 47, 47, 47, 0, 48, 48, 48, 0, 49, 49, 49, 0, 51, 51, 51, 0, 52, 52, 52, 0, 53, 53, 53, 0, 54, 54, 54, 0, 55, 55, 55, 0, 56, 56, 56, 0, 58, 58, 58, 0, 59, 59, 59, 0, 60, 60, 60, 0, 61, 61, 61, 0, 62, 62, 62, 0, 63, 63, 63, 0, 65, 65, 65, 0, 66, 66, 66, 0, 67, 67, 67, 0, 68, 68, 68, 0, 69, 69, 69, 0, 70, 70, 70, 0, 72, 72, 72, 0, 73, 73, 73, 0, 74, 74, 74, 0, 75, 75, 75, 0, 76, 76, 76, 0, 77, 77, 77, 0, 79, 79, 79, 0, 80, 80, 80, 0, 81, 81, 81, 0, 82, 82, 82, 0, 83, 83, 83, 0, 84, 84, 84, 0, 86, 86, 86, 0, 87, 87, 87, 0, 88, 88, 88, 0, 89, 89, 89, 0, 90, 90, 90, 0, 91, 91, 91, 0, 92, 92, 92, 0, 94, 94, 94, 0, 95, 95, 95, 0, 96, 96, 96, 0, 97, 97, 97, 0, 98, 98, 98, 0, 99, 99, 99, 0, 101, 101, 101, 0, 102, 102, 102, 0, 103, 103, 103, 0, 104, 104, 104, 0, 105, 105, 105, 0, 106, 106, 106, 0, 108, 108, 108, 0, 109, 109, 109, 0, 110, 110, 110, 0, 111, 111, 111, 0, 112, 112, 112, 0, 113, 113, 113, 0, 115, 115, 115, 0, 116, 116, 116, 0, 117, 117, 117, 0, 118, 118, 118, 0, 119, 119, 119, 0, 120, 120, 120, 0, 122, 122, 122, 0, 123, 123, 123, 0, 124, 124, 124, 0, 125, 125, 125, 0, 126, 126, 126, 0, 127, 127, 127, 0, 129, 129, 129, 0, 130, 130, 130, 0, 131, 131, 131, 0, 132, 132, 132, 0, 133, 133, 133, 0, 134, 134, 134, 0, 136, 136, 136, 0, 137, 137, 137, 0, 138, 138, 138, 0, 139, 139, 139, 0, 140, 140, 140, 0, 141, 141, 141, 0, 143, 143, 143, 0, 144, 144, 144, 0, 145, 145, 145, 0, 146, 146, 146, 0, 147, 147, 147, 0, 148, 148, 148, 0, 150, 150, 150, 0, 151, 151, 151, 0, 152, 152, 152, 0, 153, 153, 153, 0, 154, 154, 154, 0, 155, 155, 155, 0, 157, 157, 157, 0, 158, 158, 158, 0, 159, 159, 159, 0, 160, 160, 160, 0, 161, 161, 161, 0, 162, 162, 162, 0, 164, 164, 164, 0, 165, 165, 165, 0, 166, 166, 166, 0, 167, 167, 167, 0, 168, 168, 168, 0, 169, 169, 169, 0, 171, 171, 171, 0, 172, 172, 172, 0, 173, 173, 173, 0, 174, 174, 174, 0, 175, 175, 175, 0, 176, 176, 176, 0, 177, 177, 177, 0, 179, 179, 179, 0, 180, 180, 180, 0, 181, 181, 181, 0, 182, 182, 182, 0, 183, 183, 183, 0, 184, 184, 184, 0, 186, 186, 186, 0, 187, 187, 187, 0, 188, 188, 188, 0, 189, 189, 189, 0, 190, 190, 190, 0, 191, 191, 191, 0, 193, 193, 193, 0, 194, 194, 194, 0, 195, 195, 195, 0, 196, 196, 196, 0, 197, 197, 197, 0, 198, 198, 198, 0, 200, 200, 200, 0, 201, 201, 201, 0, 202, 202, 202, 0, 203, 203, 203, 0, 204, 204, 204, 0, 205, 205, 205, 0, 207, 207, 207, 0, 208, 208, 208, 0, 209, 209, 209, 0, 210, 210, 210, 0, 211, 211, 211, 0, 212, 212, 212, 0, 214, 214, 214, 0, 215, 215, 215, 0, 216, 216, 216, 0, 217, 217, 217, 0, 218, 218, 218, 0, 219, 219, 219, 0, 221, 221, 221, 0, 222, 222, 222, 0, 223, 223, 223, 0, 224, 224, 224, 0, 225, 225, 225, 0, 226, 226, 226, 0, 228, 228, 228, 0, 229, 229, 229, 0, 230, 230, 230, 0, 231, 231, 231, 0, 232, 232, 232, 0, 233, 233, 233, 0, 235, 235, 235, 0, 236, 236, 236, 0, 237, 237, 237, 0, 238, 238, 238, 0, 239, 239, 239, 0, 240, 240, 240, 0, 242, 242, 242, 0, 243, 243, 243, 0, 244, 244, 244, 0, 245, 245, 245, 0, 246, 246, 246, 0, 247, 247, 247, 0, 249, 249, 249, 0, 250, 250, 250, 0, 251, 251, 251, 0, 252, 252, 252, 0, 253, 253, 253, 0, 254, 254, 254, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 9, 9, 9, 0, 10, 10, 10, 0, 11, 11, 11, 0, 13, 13, 13, 0, 14, 14, 14, 0, 15, 15, 15, 0, 16, 16, 16, 0, 17, 17, 17, 0, 18, 18, 18, 0, 20, 20, 20, 0, 21, 21, 21, 0, 22, 22, 22, 0, 23, 23, 23, 0, 24, 24, 24, 0, 25, 25, 25, 0, 27, 27, 27, 0, 28, 28, 28, 0, 29, 29, 29, 0, 30, 30, 30, 0, 31, 31, 31, 0, 32, 32, 32, 0, 34, 34, 34, 0, 35, 35, 35, 0, 36, 36, 36, 0, 37, 37, 37, 0, 38, 38, 38, 0, 39, 39, 39, 0, 41, 41, 41, 0, 42, 42, 42, 0, 43, 43, 43, 0, 44, 44, 44, 0, 45, 45, 45, 0, 46, 46, 46, 0, 48, 48, 48, 0, 49, 49, 49, 0, 50, 50, 50, 0, 51, 51, 51, 0, 52, 52, 52, 0, 53, 53, 53, 0, 55, 55, 55, 0, 56, 56, 56, 0, 57, 57, 57, 0, 58, 58, 58, 0, 59, 59, 59, 0, 60, 60, 60, 0, 62, 62, 62, 0, 63, 63, 63, 0, 64, 64, 64, 0, 65, 65, 65, 0, 66, 66, 66, 0, 67, 67, 67, 0, 69, 69, 69, 0, 70, 70, 70, 0, 71, 71, 71, 0, 72, 72, 72, 0, 73, 73, 73, 0, 74, 74, 74, 0, 76, 76, 76, 0, 77, 77, 77, 0, 78, 78, 78, 0, 79, 79, 79, 0, 80, 80, 80, 0, 81, 81, 81, 0, 83, 83, 83, 0, 84, 84, 84, 0, 85, 85, 85, 0, 86, 86, 86, 0, 87, 87, 87, 0, 88, 88, 88, 0, 90, 90, 90, 0, 91, 91, 91, 0, 92, 92, 92, 0, 93, 93, 93, 0, 94, 94, 94, 0, 95, 95, 95, 0, 96, 96, 96, 0, 98, 98, 98, 0, 99, 99, 99, 0, 100, 100, 100, 0, 101, 101, 101, 0, 102, 102, 102, 0, 103, 103, 103, 0, 105, 105, 105, 0, 106, 106, 106, 0, 107, 107, 107, 0, 108, 108, 108, 0, 109, 109, 109, 0, 110, 110, 110, 0, 112, 112, 112, 0, 113, 113, 113, 0, 114, 114, 114, 0, 115, 115, 115, 0, 116, 116, 116, 0, 117, 117, 117, 0, 119, 119, 119, 0, 120, 120, 120, 0, 121, 121, 121, 0, 122, 122, 122, 0, 123, 123, 123, 0, 124, 124, 124, 0, 126, 126, 126, 0, 127, 127, 127, 0, 128, 128, 128, 0, 129, 129, 129, 0, 130, 130, 130, 0, 131, 131, 131, 0, 133, 133, 133, 0, 134, 134, 134, 0, 135, 135, 135, 0, 136, 136, 136, 0, 137, 137, 137, 0, 138, 138, 138, 0, 140, 140, 140, 0, 141, 141, 141, 0, 142, 142, 142, 0, 143, 143, 143, 0, 144, 144, 144, 0, 145, 145, 145, 0, 147, 147, 147, 0, 148, 148, 148, 0, 149, 149, 149, 0, 150, 150, 150, 0, 151, 151, 151, 0, 152, 152, 152, 0, 154, 154, 154, 0, 155, 155, 155, 0, 156, 156, 156, 0, 157, 157, 157, 0, 158, 158, 158, 0, 159, 159, 159, 0, 161, 161, 161, 0, 162, 162, 162, 0, 163, 163, 163, 0, 164, 164, 164, 0, 165, 165, 165, 0, 166, 166, 166, 0, 168, 168, 168, 0, 169, 169, 169, 0, 170, 170, 170, 0, 171, 171, 171, 0, 172, 172, 172, 0, 173, 173, 173, 0, 175, 175, 175, 0, 176, 176, 176, 0, 177, 177, 177, 0, 178, 178, 178, 0, 179, 179, 179, 0, 180, 180, 180, 0, 181, 181, 181, 0, 183, 183, 183, 0, 184, 184, 184, 0, 185, 185, 185, 0, 186, 186, 186, 0, 187, 187, 187, 0, 188, 188, 188, 0, 190, 190, 190, 0, 191, 191, 191, 0, 192, 192, 192, 0, 193, 193, 193, 0, 194, 194, 194, 0, 195, 195, 195, 0, 197, 197, 197, 0, 198, 198, 198, 0, 199, 199, 199, 0, 200, 200, 200, 0, 201, 201, 201, 0, 202, 202, 202, 0, 204, 204, 204, 0, 205, 205, 205, 0, 206, 206, 206, 0, 207, 207, 207, 0, 208, 208, 208, 0, 209, 209, 209, 0, 211, 211, 211, 0, 212, 212, 212, 0, 213, 213, 213, 0, 214, 214, 214, 0, 215, 215, 215, 0, 216, 216, 216, 0, 218, 218, 218, 0, 219, 219, 219, 0, 220, 220, 220, 0, 221, 221, 221, 0, 222, 222, 222, 0, 223, 223, 223, 0, 225, 225, 225, 0, 226, 226, 226, 0, 227, 227, 227, 0, 228, 228, 228, 0, 229, 229, 229, 0, 230, 230, 230, 0, 232, 232, 232, 0, 233, 233, 233, 0, 234, 234, 234, 0, 235, 235, 235, 0, 236, 236, 236, 0, 237, 237, 237, 0, 239, 239, 239, 0, 240, 240, 240, 0, 241, 241, 241, 0, 242, 242, 242, 0, 243, 243, 243, 0, 244, 244, 244, 0, 246, 246, 246, 0, 247, 247, 247, 0, 248, 248, 248, 0, 249, 249, 249, 0, 250, 250, 250, 0, 251, 251, 251, 0, 253, 253, 253, 0, 254, 254, 254, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 12, 12, 12, 0, 12, 12, 12, 0, 12, 12, 12, 0, 12, 12, 12, 0, 12, 12, 12, 0, 12, 12, 12, 0, 12, 12, 12, 0, 12, 12, 12, 0, 12, 12, 12, 0, 12, 12, 12, 0, 12, 12, 12, 0, 12, 12, 12, 0, 12, 12, 12, 0, 12, 12, 12, 0, 12, 12, 12, 0, 12, 12, 12, 0, 12, 12, 12, 0, 13, 13, 13, 0, 14, 14, 14, 0, 15, 15, 15, 0, 17, 17, 17, 0, 18, 18, 18, 0, 19, 19, 19, 0, 20, 20, 20, 0, 21, 21, 21, 0, 22, 22, 22, 0, 24, 24, 24, 0, 25, 25, 25, 0, 26, 26, 26, 0, 27, 27, 27, 0, 28, 28, 28, 0, 29, 29, 29, 0, 31, 31, 31, 0, 32, 32, 32, 0, 33, 33, 33, 0, 34, 34, 34, 0, 35, 35, 35, 0, 36, 36, 36, 0, 38, 38, 38, 0, 39, 39, 39, 0, 40, 40, 40, 0, 41, 41, 41, 0, 42, 42, 42, 0, 43, 43, 43, 0, 45, 45, 45, 0, 46, 46, 46, 0, 47, 47, 47, 0, 48, 48, 48, 0, 49, 49, 49, 0, 50, 50, 50, 0, 52, 52, 52, 0, 53, 53, 53, 0, 54, 54, 54, 0, 55, 55, 55, 0, 56, 56, 56, 0, 57, 57, 57, 0, 59, 59, 59, 0, 60, 60, 60, 0, 61, 61, 61, 0, 62, 62, 62, 0, 63, 63, 63, 0, 64, 64, 64, 0, 66, 66, 66, 0, 67, 67, 67, 0, 68, 68, 68, 0, 69, 69, 69, 0, 70, 70, 70, 0, 71, 71, 71, 0, 73, 73, 73, 0, 74, 74, 74, 0, 75, 75, 75, 0, 76, 76, 76, 0, 77, 77, 77, 0, 78, 78, 78, 0, 80, 80, 80, 0, 81, 81, 81, 0, 82, 82, 82, 0, 83, 83, 83, 0, 84, 84, 84, 0, 85, 85, 85, 0, 87, 87, 87, 0, 88, 88, 88, 0, 89, 89, 89, 0, 90, 90, 90, 0, 91, 91, 91, 0, 92, 92, 92, 0, 94, 94, 94, 0, 95, 95, 95, 0, 96, 96, 96, 0, 97, 97, 97, 0, 98, 98, 98, 0, 99, 99, 99, 0, 100, 100, 100, 0, 102, 102, 102, 0, 103, 103, 103, 0, 104, 104, 104, 0, 105, 105, 105, 0, 106, 106, 106, 0, 107, 107, 107, 0, 109, 109, 109, 0, 110, 110, 110, 0, 111, 111, 111, 0, 112, 112, 112, 0, 113, 113, 113, 0, 114, 114, 114, 0, 116, 116, 116, 0, 117, 117, 117, 0, 118, 118, 118, 0, 119, 119, 119, 0, 120, 120, 120, 0, 121, 121, 121, 0, 123, 123, 123, 0, 124, 124, 124, 0, 125, 125, 125, 0, 126, 126, 126, 0, 127, 127, 127, 0, 128, 128, 128, 0, 130, 130, 130, 0, 131, 131, 131, 0, 132, 132, 132, 0, 133, 133, 133, 0, 134, 134, 134, 0, 135, 135, 135, 0, 137, 137, 137, 0, 138, 138, 138, 0, 139, 139, 139, 0, 140, 140, 140, 0, 141, 141, 141, 0, 142, 142, 142, 0, 144, 144, 144, 0, 145, 145, 145, 0, 146, 146, 146, 0, 147, 147, 147, 0, 148, 148, 148, 0, 149, 149, 149, 0, 151, 151, 151, 0, 152, 152, 152, 0, 153, 153, 153, 0, 154, 154, 154, 0, 155, 155, 155, 0, 156, 156, 156, 0, 158, 158, 158, 0, 159, 159, 159, 0, 160, 160, 160, 0, 161, 161, 161, 0, 162, 162, 162, 0, 163, 163, 163, 0, 165, 165, 165, 0, 166, 166, 166, 0, 167, 167, 167, 0, 168, 168, 168, 0, 169, 169, 169, 0, 170, 170, 170, 0, 172, 172, 172, 0, 173, 173, 173, 0, 174, 174, 174, 0, 175, 175, 175, 0, 176, 176, 176, 0, 177, 177, 177, 0, 179, 179, 179, 0, 180, 180, 180, 0, 181, 181, 181, 0, 182, 182, 182, 0, 183, 183, 183, 0, 184, 184, 184, 0, 185, 185, 185, 0, 187, 187, 187, 0, 188, 188, 188, 0, 189, 189, 189, 0, 190, 190, 190, 0, 191, 191, 191, 0, 192, 192, 192, 0, 194, 194, 194, 0, 195, 195, 195, 0, 196, 196, 196, 0, 197, 197, 197, 0, 198, 198, 198, 0, 199, 199, 199, 0, 201, 201, 201, 0, 202, 202, 202, 0, 203, 203, 203, 0, 204, 204, 204, 0, 205, 205, 205, 0, 206, 206, 206, 0, 208, 208, 208, 0, 209, 209, 209, 0, 210, 210, 210, 0, 211, 211, 211, 0, 212, 212, 212, 0, 213, 213, 213, 0, 215, 215, 215, 0, 216, 216, 216, 0, 217, 217, 217, 0, 218, 218, 218, 0, 219, 219, 219, 0, 220, 220, 220, 0, 222, 222, 222, 0, 223, 223, 223, 0, 224, 224, 224, 0, 225, 225, 225, 0, 226, 226, 226, 0, 227, 227, 227, 0, 229, 229, 229, 0, 230, 230, 230, 0, 231, 231, 231, 0, 232, 232, 232, 0, 233, 233, 233, 0, 234, 234, 234, 0, 236, 236, 236, 0, 237, 237, 237, 0, 238, 238, 238, 0, 239, 239, 239, 0, 240, 240, 240, 0, 241, 241, 241, 0, 243, 243, 243, 0, 244, 244, 244, 0, 245, 245, 245, 0, 246, 246, 246, 0, 247, 247, 247, 0, 248, 248, 248, 0, 250, 250, 250, 0, 251, 251, 251, 0, 252, 252, 252, 0, 253, 253, 253, 0, 254, 254, 254, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 16, 16, 16, 0, 16, 16, 16, 0, 16, 16, 16, 0, 16, 16, 16, 0, 16, 16, 16, 0, 16, 16, 16, 0, 16, 16, 16, 0, 16, 16, 16, 0, 16, 16, 16, 0, 16, 16, 16, 0, 16, 16, 16, 0, 16, 16, 16, 0, 16, 16, 16, 0, 16, 16, 16, 0, 16, 16, 16, 0, 16, 16, 16, 0, 16, 16, 16, 0, 17, 17, 17, 0, 18, 18, 18, 0, 19, 19, 19, 0, 21, 21, 21, 0, 22, 22, 22, 0, 23, 23, 23, 0, 24, 24, 24, 0, 25, 25, 25, 0, 26, 26, 26, 0, 28, 28, 28, 0, 29, 29, 29, 0, 30, 30, 30, 0, 31, 31, 31, 0, 32, 32, 32, 0, 33, 33, 33, 0, 35, 35, 35, 0, 36, 36, 36, 0, 37, 37, 37, 0, 38, 38, 38, 0, 39, 39, 39, 0, 40, 40, 40, 0, 42, 42, 42, 0, 43, 43, 43, 0, 44, 44, 44, 0, 45, 45, 45, 0, 46, 46, 46, 0, 47, 47, 47, 0, 49, 49, 49, 0, 50, 50, 50, 0, 51, 51, 51, 0, 52, 52, 52, 0, 53, 53, 53, 0, 54, 54, 54, 0, 56, 56, 56, 0, 57, 57, 57, 0, 58, 58, 58, 0, 59, 59, 59, 0, 60, 60, 60, 0, 61, 61, 61, 0, 63, 63, 63, 0, 64, 64, 64, 0, 65, 65, 65, 0, 66, 66, 66, 0, 67, 67, 67, 0, 68, 68, 68, 0, 70, 70, 70, 0, 71, 71, 71, 0, 72, 72, 72, 0, 73, 73, 73, 0, 74, 74, 74, 0, 75, 75, 75, 0, 77, 77, 77, 0, 78, 78, 78, 0, 79, 79, 79, 0, 80, 80, 80, 0, 81, 81, 81, 0, 82, 82, 82, 0, 84, 84, 84, 0, 85, 85, 85, 0, 86, 86, 86, 0, 87, 87, 87, 0, 88, 88, 88, 0, 89, 89, 89, 0, 91, 91, 91, 0, 92, 92, 92, 0, 93, 93, 93, 0, 94, 94, 94, 0, 95, 95, 95, 0, 96, 96, 96, 0, 98, 98, 98, 0, 99, 99, 99, 0, 100, 100, 100, 0, 101, 101, 101, 0, 102, 102, 102, 0, 103, 103, 103, 0, 104, 104, 104, 0, 106, 106, 106, 0, 107, 107, 107, 0, 108, 108, 108, 0, 109, 109, 109, 0, 110, 110, 110, 0, 111, 111, 111, 0, 113, 113, 113, 0, 114, 114, 114, 0, 115, 115, 115, 0, 116, 116, 116, 0, 117, 117, 117, 0, 118, 118, 118, 0, 120, 120, 120, 0, 121, 121, 121, 0, 122, 122, 122, 0, 123, 123, 123, 0, 124, 124, 124, 0, 125, 125, 125, 0, 127, 127, 127, 0, 128, 128, 128, 0, 129, 129, 129, 0, 130, 130, 130, 0, 131, 131, 131, 0, 132, 132, 132, 0, 134, 134, 134, 0, 135, 135, 135, 0, 136, 136, 136, 0, 137, 137, 137, 0, 138, 138, 138, 0, 139, 139, 139, 0, 141, 141, 141, 0, 142, 142, 142, 0, 143, 143, 143, 0, 144, 144, 144, 0, 145, 145, 145, 0, 146, 146, 146, 0, 148, 148, 148, 0, 149, 149, 149, 0, 150, 150, 150, 0, 151, 151, 151, 0, 152, 152, 152, 0, 153, 153, 153, 0, 155, 155, 155, 0, 156, 156, 156, 0, 157, 157, 157, 0, 158, 158, 158, 0, 159, 159, 159, 0, 160, 160, 160, 0, 162, 162, 162, 0, 163, 163, 163, 0, 164, 164, 164, 0, 165, 165, 165, 0, 166, 166, 166, 0, 167, 167, 167, 0, 169, 169, 169, 0, 170, 170, 170, 0, 171, 171, 171, 0, 172, 172, 172, 0, 173, 173, 173, 0, 174, 174, 174, 0, 176, 176, 176, 0, 177, 177, 177, 0, 178, 178, 178, 0, 179, 179, 179, 0, 180, 180, 180, 0, 181, 181, 181, 0, 183, 183, 183, 0, 184, 184, 184, 0, 185, 185, 185, 0, 186, 186, 186, 0, 187, 187, 187, 0, 188, 188, 188, 0, 189, 189, 189, 0, 191, 191, 191, 0, 192, 192, 192, 0, 193, 193, 193, 0, 194, 194, 194, 0, 195, 195, 195, 0, 196, 196, 196, 0, 198, 198, 198, 0, 199, 199, 199, 0, 200, 200, 200, 0, 201, 201, 201, 0, 202, 202, 202, 0, 203, 203, 203, 0, 205, 205, 205, 0, 206, 206, 206, 0, 207, 207, 207, 0, 208, 208, 208, 0, 209, 209, 209, 0, 210, 210, 210, 0, 212, 212, 212, 0, 213, 213, 213, 0, 214, 214, 214, 0, 215, 215, 215, 0, 216, 216, 216, 0, 217, 217, 217, 0, 219, 219, 219, 0, 220, 220, 220, 0, 221, 221, 221, 0, 222, 222, 222, 0, 223, 223, 223, 0, 224, 224, 224, 0, 226, 226, 226, 0, 227, 227, 227, 0, 228, 228, 228, 0, 229, 229, 229, 0, 230, 230, 230, 0, 231, 231, 231, 0, 233, 233, 233, 0, 234, 234, 234, 0, 235, 235, 235, 0, 236, 236, 236, 0, 237, 237, 237, 0, 238, 238, 238, 0, 240, 240, 240, 0, 241, 241, 241, 0, 242, 242, 242, 0, 243, 243, 243, 0, 244, 244, 244, 0, 245, 245, 245, 0, 247, 247, 247, 0, 248, 248, 248, 0, 249, 249, 249, 0, 250, 250, 250, 0, 251, 251, 251, 0, 252, 252, 252, 0, 254, 254, 254, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 20, 20, 20, 0, 20, 20, 20, 0, 20, 20, 20, 0, 20, 20, 20, 0, 20, 20, 20, 0, 20, 20, 20, 0, 20, 20, 20, 0, 20, 20, 20, 0, 20, 20, 20, 0, 20, 20, 20, 0, 20, 20, 20, 0, 20, 20, 20, 0, 20, 20, 20, 0, 20, 20, 20, 0, 20, 20, 20, 0, 20, 20, 20, 0, 20, 20, 20, 0, 21, 21, 21, 0, 22, 22, 22, 0, 23, 23, 23, 0, 25, 25, 25, 0, 26, 26, 26, 0, 27, 27, 27, 0, 28, 28, 28, 0, 29, 29, 29, 0, 30, 30, 30, 0, 32, 32, 32, 0, 33, 33, 33, 0, 34, 34, 34, 0, 35, 35, 35, 0, 36, 36, 36, 0, 37, 37, 37, 0, 39, 39, 39, 0, 40, 40, 40, 0, 41, 41, 41, 0, 42, 42, 42, 0, 43, 43, 43, 0, 44, 44, 44, 0, 46, 46, 46, 0, 47, 47, 47, 0, 48, 48, 48, 0, 49, 49, 49, 0, 50, 50, 50, 0, 51, 51, 51, 0, 53, 53, 53, 0, 54, 54, 54, 0, 55, 55, 55, 0, 56, 56, 56, 0, 57, 57, 57, 0, 58, 58, 58, 0, 60, 60, 60, 0, 61, 61, 61, 0, 62, 62, 62, 0, 63, 63, 63, 0, 64, 64, 64, 0, 65, 65, 65, 0, 67, 67, 67, 0, 68, 68, 68, 0, 69, 69, 69, 0, 70, 70, 70, 0, 71, 71, 71, 0, 72, 72, 72, 0, 74, 74, 74, 0, 75, 75, 75, 0, 76, 76, 76, 0, 77, 77, 77, 0, 78, 78, 78, 0, 79, 79, 79, 0, 81, 81, 81, 0, 82, 82, 82, 0, 83, 83, 83, 0, 84, 84, 84, 0, 85, 85, 85, 0, 86, 86, 86, 0, 88, 88, 88, 0, 89, 89, 89, 0, 90, 90, 90, 0, 91, 91, 91, 0, 92, 92, 92, 0, 93, 93, 93, 0, 95, 95, 95, 0, 96, 96, 96, 0, 97, 97, 97, 0, 98, 98, 98, 0, 99, 99, 99, 0, 100, 100, 100, 0, 102, 102, 102, 0, 103, 103, 103, 0, 104, 104, 104, 0, 105, 105, 105, 0, 106, 106, 106, 0, 107, 107, 107, 0, 108, 108, 108, 0, 110, 110, 110, 0, 111, 111, 111, 0, 112, 112, 112, 0, 113, 113, 113, 0, 114, 114, 114, 0, 115, 115, 115, 0, 117, 117, 117, 0, 118, 118, 118, 0, 119, 119, 119, 0, 120, 120, 120, 0, 121, 121, 121, 0, 122, 122, 122, 0, 124, 124, 124, 0, 125, 125, 125, 0, 126, 126, 126, 0, 127, 127, 127, 0, 128, 128, 128, 0, 129, 129, 129, 0, 131, 131, 131, 0, 132, 132, 132, 0, 133, 133, 133, 0, 134, 134, 134, 0, 135, 135, 135, 0, 136, 136, 136, 0, 138, 138, 138, 0, 139, 139, 139, 0, 140, 140, 140, 0, 141, 141, 141, 0, 142, 142, 142, 0, 143, 143, 143, 0, 145, 145, 145, 0, 146, 146, 146, 0, 147, 147, 147, 0, 148, 148, 148, 0, 149, 149, 149, 0, 150, 150, 150, 0, 152, 152, 152, 0, 153, 153, 153, 0, 154, 154, 154, 0, 155, 155, 155, 0, 156, 156, 156, 0, 157, 157, 157, 0, 159, 159, 159, 0, 160, 160, 160, 0, 161, 161, 161, 0, 162, 162, 162, 0, 163, 163, 163, 0, 164, 164, 164, 0, 166, 166, 166, 0, 167, 167, 167, 0, 168, 168, 168, 0, 169, 169, 169, 0, 170, 170, 170, 0, 171, 171, 171, 0, 173, 173, 173, 0, 174, 174, 174, 0, 175, 175, 175, 0, 176, 176, 176, 0, 177, 177, 177, 0, 178, 178, 178, 0, 180, 180, 180, 0, 181, 181, 181, 0, 182, 182, 182, 0, 183, 183, 183, 0, 184, 184, 184, 0, 185, 185, 185, 0, 187, 187, 187, 0, 188, 188, 188, 0, 189, 189, 189, 0, 190, 190, 190, 0, 191, 191, 191, 0, 192, 192, 192, 0, 193, 193, 193, 0, 195, 195, 195, 0, 196, 196, 196, 0, 197, 197, 197, 0, 198, 198, 198, 0, 199, 199, 199, 0, 200, 200, 200, 0, 202, 202, 202, 0, 203, 203, 203, 0, 204, 204, 204, 0, 205, 205, 205, 0, 206, 206, 206, 0, 207, 207, 207, 0, 209, 209, 209, 0, 210, 210, 210, 0, 211, 211, 211, 0, 212, 212, 212, 0, 213, 213, 213, 0, 214, 214, 214, 0, 216, 216, 216, 0, 217, 217, 217, 0, 218, 218, 218, 0, 219, 219, 219, 0, 220, 220, 220, 0, 221, 221, 221, 0, 223, 223, 223, 0, 224, 224, 224, 0, 225, 225, 225, 0, 226, 226, 226, 0, 227, 227, 227, 0, 228, 228, 228, 0, 230, 230, 230, 0, 231, 231, 231, 0, 232, 232, 232, 0, 233, 233, 233, 0, 234, 234, 234, 0, 235, 235, 235, 0, 237, 237, 237, 0, 238, 238, 238, 0, 239, 239, 239, 0, 240, 240, 240, 0, 241, 241, 241, 0, 242, 242, 242, 0, 244, 244, 244, 0, 245, 245, 245, 0, 246, 246, 246, 0, 247, 247, 247, 0, 248, 248, 248, 0, 249, 249, 249, 0, 251, 251, 251, 0, 252, 252, 252, 0, 253, 253, 253, 0, 254, 254, 254, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 24, 24, 24, 0, 24, 24, 24, 0, 24, 24, 24, 0, 24, 24, 24, 0, 24, 24, 24, 0, 24, 24, 24, 0, 24, 24, 24, 0, 24, 24, 24, 0, 24, 24, 24, 0, 24, 24, 24, 0, 24, 24, 24, 0, 24, 24, 24, 0, 24, 24, 24, 0, 24, 24, 24, 0, 24, 24, 24, 0, 24, 24, 24, 0, 24, 24, 24, 0, 25, 25, 25, 0, 26, 26, 26, 0, 27, 27, 27, 0, 29, 29, 29, 0, 30, 30, 30, 0, 31, 31, 31, 0, 32, 32, 32, 0, 33, 33, 33, 0, 34, 34, 34, 0, 36, 36, 36, 0, 37, 37, 37, 0, 38, 38, 38, 0, 39, 39, 39, 0, 40, 40, 40, 0, 41, 41, 41, 0, 43, 43, 43, 0, 44, 44, 44, 0, 45, 45, 45, 0, 46, 46, 46, 0, 47, 47, 47, 0, 48, 48, 48, 0, 50, 50, 50, 0, 51, 51, 51, 0, 52, 52, 52, 0, 53, 53, 53, 0, 54, 54, 54, 0, 55, 55, 55, 0, 57, 57, 57, 0, 58, 58, 58, 0, 59, 59, 59, 0, 60, 60, 60, 0, 61, 61, 61, 0, 62, 62, 62, 0, 64, 64, 64, 0, 65, 65, 65, 0, 66, 66, 66, 0, 67, 67, 67, 0, 68, 68, 68, 0, 69, 69, 69, 0, 71, 71, 71, 0, 72, 72, 72, 0, 73, 73, 73, 0, 74, 74, 74, 0, 75, 75, 75, 0, 76, 76, 76, 0, 78, 78, 78, 0, 79, 79, 79, 0, 80, 80, 80, 0, 81, 81, 81, 0, 82, 82, 82, 0, 83, 83, 83, 0, 85, 85, 85, 0, 86, 86, 86, 0, 87, 87, 87, 0, 88, 88, 88, 0, 89, 89, 89, 0, 90, 90, 90, 0, 92, 92, 92, 0, 93, 93, 93, 0, 94, 94, 94, 0, 95, 95, 95, 0, 96, 96, 96, 0, 97, 97, 97, 0, 99, 99, 99, 0, 100, 100, 100, 0, 101, 101, 101, 0, 102, 102, 102, 0, 103, 103, 103, 0, 104, 104, 104, 0, 106, 106, 106, 0, 107, 107, 107, 0, 108, 108, 108, 0, 109, 109, 109, 0, 110, 110, 110, 0, 111, 111, 111, 0, 112, 112, 112, 0, 114, 114, 114, 0, 115, 115, 115, 0, 116, 116, 116, 0, 117, 117, 117, 0, 118, 118, 118, 0, 119, 119, 119, 0, 121, 121, 121, 0, 122, 122, 122, 0, 123, 123, 123, 0, 124, 124, 124, 0, 125, 125, 125, 0, 126, 126, 126, 0, 128, 128, 128, 0, 129, 129, 129, 0, 130, 130, 130, 0, 131, 131, 131, 0, 132, 132, 132, 0, 133, 133, 133, 0, 135, 135, 135, 0, 136, 136, 136, 0, 137, 137, 137, 0, 138, 138, 138, 0, 139, 139, 139, 0, 140, 140, 140, 0, 142, 142, 142, 0, 143, 143, 143, 0, 144, 144, 144, 0, 145, 145, 145, 0, 146, 146, 146, 0, 147, 147, 147, 0, 149, 149, 149, 0, 150, 150, 150, 0, 151, 151, 151, 0, 152, 152, 152, 0, 153, 153, 153, 0, 154, 154, 154, 0, 156, 156, 156, 0, 157, 157, 157, 0, 158, 158, 158, 0, 159, 159, 159, 0, 160, 160, 160, 0, 161, 161, 161, 0, 163, 163, 163, 0, 164, 164, 164, 0, 165, 165, 165, 0, 166, 166, 166, 0, 167, 167, 167, 0, 168, 168, 168, 0, 170, 170, 170, 0, 171, 171, 171, 0, 172, 172, 172, 0, 173, 173, 173, 0, 174, 174, 174, 0, 175, 175, 175, 0, 177, 177, 177, 0, 178, 178, 178, 0, 179, 179, 179, 0, 180, 180, 180, 0, 181, 181, 181, 0, 182, 182, 182, 0, 184, 184, 184, 0, 185, 185, 185, 0, 186, 186, 186, 0, 187, 187, 187, 0, 188, 188, 188, 0, 189, 189, 189, 0, 191, 191, 191, 0, 192, 192, 192, 0, 193, 193, 193, 0, 194, 194, 194, 0, 195, 195, 195, 0, 196, 196, 196, 0, 197, 197, 197, 0, 199, 199, 199, 0, 200, 200, 200, 0, 201, 201, 201, 0, 202, 202, 202, 0, 203, 203, 203, 0, 204, 204, 204, 0, 206, 206, 206, 0, 207, 207, 207, 0, 208, 208, 208, 0, 209, 209, 209, 0, 210, 210, 210, 0, 211, 211, 211, 0, 213, 213, 213, 0, 214, 214, 214, 0, 215, 215, 215, 0, 216, 216, 216, 0, 217, 217, 217, 0, 218, 218, 218, 0, 220, 220, 220, 0, 221, 221, 221, 0, 222, 222, 222, 0, 223, 223, 223, 0, 224, 224, 224, 0, 225, 225, 225, 0, 227, 227, 227, 0, 228, 228, 228, 0, 229, 229, 229, 0, 230, 230, 230, 0, 231, 231, 231, 0, 232, 232, 232, 0, 234, 234, 234, 0, 235, 235, 235, 0, 236, 236, 236, 0, 237, 237, 237, 0, 238, 238, 238, 0, 239, 239, 239, 0, 241, 241, 241, 0, 242, 242, 242, 0, 243, 243, 243, 0, 244, 244, 244, 0, 245, 245, 245, 0, 246, 246, 246, 0, 248, 248, 248, 0, 249, 249, 249, 0, 250, 250, 250, 0, 251, 251, 251, 0, 252, 252, 252, 0, 253, 253, 253, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 28, 28, 28, 0, 28, 28, 28, 0, 28, 28, 28, 0, 28, 28, 28, 0, 28, 28, 28, 0, 28, 28, 28, 0, 28, 28, 28, 0, 28, 28, 28, 0, 28, 28, 28, 0, 28, 28, 28, 0, 28, 28, 28, 0, 28, 28, 28, 0, 28, 28, 28, 0, 28, 28, 28, 0, 28, 28, 28, 0, 28, 28, 28, 0, 28, 28, 28, 0, 29, 29, 29, 0, 30, 30, 30, 0, 31, 31, 31, 0, 33, 33, 33, 0, 34, 34, 34, 0, 35, 35, 35, 0, 36, 36, 36, 0, 37, 37, 37, 0, 38, 38, 38, 0, 40, 40, 40, 0, 41, 41, 41, 0, 42, 42, 42, 0, 43, 43, 43, 0, 44, 44, 44, 0, 45, 45, 45, 0, 47, 47, 47, 0, 48, 48, 48, 0, 49, 49, 49, 0, 50, 50, 50, 0, 51, 51, 51, 0, 52, 52, 52, 0, 54, 54, 54, 0, 55, 55, 55, 0, 56, 56, 56, 0, 57, 57, 57, 0, 58, 58, 58, 0, 59, 59, 59, 0, 61, 61, 61, 0, 62, 62, 62, 0, 63, 63, 63, 0, 64, 64, 64, 0, 65, 65, 65, 0, 66, 66, 66, 0, 68, 68, 68, 0, 69, 69, 69, 0, 70, 70, 70, 0, 71, 71, 71, 0, 72, 72, 72, 0, 73, 73, 73, 0, 75, 75, 75, 0, 76, 76, 76, 0, 77, 77, 77, 0, 78, 78, 78, 0, 79, 79, 79, 0, 80, 80, 80, 0, 82, 82, 82, 0, 83, 83, 83, 0, 84, 84, 84, 0, 85, 85, 85, 0, 86, 86, 86, 0, 87, 87, 87, 0, 89, 89, 89, 0, 90, 90, 90, 0, 91, 91, 91, 0, 92, 92, 92, 0, 93, 93, 93, 0, 94, 94, 94, 0, 96, 96, 96, 0, 97, 97, 97, 0, 98, 98, 98, 0, 99, 99, 99, 0, 100, 100, 100, 0, 101, 101, 101, 0, 103, 103, 103, 0, 104, 104, 104, 0, 105, 105, 105, 0, 106, 106, 106, 0, 107, 107, 107, 0, 108, 108, 108, 0, 110, 110, 110, 0, 111, 111, 111, 0, 112, 112, 112, 0, 113, 113, 113, 0, 114, 114, 114, 0, 115, 115, 115, 0, 116, 116, 116, 0, 118, 118, 118, 0, 119, 119, 119, 0, 120, 120, 120, 0, 121, 121, 121, 0, 122, 122, 122, 0, 123, 123, 123, 0, 125, 125, 125, 0, 126, 126, 126, 0, 127, 127, 127, 0, 128, 128, 128, 0, 129, 129, 129, 0, 130, 130, 130, 0, 132, 132, 132, 0, 133, 133, 133, 0, 134, 134, 134, 0, 135, 135, 135, 0, 136, 136, 136, 0, 137, 137, 137, 0, 139, 139, 139, 0, 140, 140, 140, 0, 141, 141, 141, 0, 142, 142, 142, 0, 143, 143, 143, 0, 144, 144, 144, 0, 146, 146, 146, 0, 147, 147, 147, 0, 148, 148, 148, 0, 149, 149, 149, 0, 150, 150, 150, 0, 151, 151, 151, 0, 153, 153, 153, 0, 154, 154, 154, 0, 155, 155, 155, 0, 156, 156, 156, 0, 157, 157, 157, 0, 158, 158, 158, 0, 160, 160, 160, 0, 161, 161, 161, 0, 162, 162, 162, 0, 163, 163, 163, 0, 164, 164, 164, 0, 165, 165, 165, 0, 167, 167, 167, 0, 168, 168, 168, 0, 169, 169, 169, 0, 170, 170, 170, 0, 171, 171, 171, 0, 172, 172, 172, 0, 174, 174, 174, 0, 175, 175, 175, 0, 176, 176, 176, 0, 177, 177, 177, 0, 178, 178, 178, 0, 179, 179, 179, 0, 181, 181, 181, 0, 182, 182, 182, 0, 183, 183, 183, 0, 184, 184, 184, 0, 185, 185, 185, 0, 186, 186, 186, 0, 188, 188, 188, 0, 189, 189, 189, 0, 190, 190, 190, 0, 191, 191, 191, 0, 192, 192, 192, 0, 193, 193, 193, 0, 195, 195, 195, 0, 196, 196, 196, 0, 197, 197, 197, 0, 198, 198, 198, 0, 199, 199, 199, 0, 200, 200, 200, 0, 201, 201, 201, 0, 203, 203, 203, 0, 204, 204, 204, 0, 205, 205, 205, 0, 206, 206, 206, 0, 207, 207, 207, 0, 208, 208, 208, 0, 210, 210, 210, 0, 211, 211, 211, 0, 212, 212, 212, 0, 213, 213, 213, 0, 214, 214, 214, 0, 215, 215, 215, 0, 217, 217, 217, 0, 218, 218, 218, 0, 219, 219, 219, 0, 220, 220, 220, 0, 221, 221, 221, 0, 222, 222, 222, 0, 224, 224, 224, 0, 225, 225, 225, 0, 226, 226, 226, 0, 227, 227, 227, 0, 228, 228, 228, 0, 229, 229, 229, 0, 231, 231, 231, 0, 232, 232, 232, 0, 233, 233, 233, 0, 234, 234, 234, 0, 235, 235, 235, 0, 236, 236, 236, 0, 238, 238, 238, 0, 239, 239, 239, 0, 240, 240, 240, 0, 241, 241, 241, 0, 242, 242, 242, 0, 243, 243, 243, 0, 245, 245, 245, 0, 246, 246, 246, 0, 247, 247, 247, 0, 248, 248, 248, 0, 249, 249, 249, 0, 250, 250, 250, 0, 252, 252, 252, 0, 253, 253, 253, 0, 254, 254, 254, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 32, 32, 32, 0, 32, 32, 32, 0, 32, 32, 32, 0, 32, 32, 32, 0, 32, 32, 32, 0, 32, 32, 32, 0, 32, 32, 32, 0, 32, 32, 32, 0, 32, 32, 32, 0, 32, 32, 32, 0, 32, 32, 32, 0, 32, 32, 32, 0, 32, 32, 32, 0, 32, 32, 32, 0, 32, 32, 32, 0, 32, 32, 32, 0, 32, 32, 32, 0, 33, 33, 33, 0, 34, 34, 34, 0, 35, 35, 35, 0, 37, 37, 37, 0, 38, 38, 38, 0, 39, 39, 39, 0, 40, 40, 40, 0, 41, 41, 41, 0, 42, 42, 42, 0, 44, 44, 44, 0, 45, 45, 45, 0, 46, 46, 46, 0, 47, 47, 47, 0, 48, 48, 48, 0, 49, 49, 49, 0, 51, 51, 51, 0, 52, 52, 52, 0, 53, 53, 53, 0, 54, 54, 54, 0, 55, 55, 55, 0, 56, 56, 56, 0, 58, 58, 58, 0, 59, 59, 59, 0, 60, 60, 60, 0, 61, 61, 61, 0, 62, 62, 62, 0, 63, 63, 63, 0, 65, 65, 65, 0, 66, 66, 66, 0, 67, 67, 67, 0, 68, 68, 68, 0, 69, 69, 69, 0, 70, 70, 70, 0, 72, 72, 72, 0, 73, 73, 73, 0, 74, 74, 74, 0, 75, 75, 75, 0, 76, 76, 76, 0, 77, 77, 77, 0, 79, 79, 79, 0, 80, 80, 80, 0, 81, 81, 81, 0, 82, 82, 82, 0, 83, 83, 83, 0, 84, 84, 84, 0, 86, 86, 86, 0, 87, 87, 87, 0, 88, 88, 88, 0, 89, 89, 89, 0, 90, 90, 90, 0, 91, 91, 91, 0, 93, 93, 93, 0, 94, 94, 94, 0, 95, 95, 95, 0, 96, 96, 96, 0, 97, 97, 97, 0, 98, 98, 98, 0, 100, 100, 100, 0, 101, 101, 101, 0, 102, 102, 102, 0, 103, 103, 103, 0, 104, 104, 104, 0, 105, 105, 105, 0, 107, 107, 107, 0, 108, 108, 108, 0, 109, 109, 109, 0, 110, 110, 110, 0, 111, 111, 111, 0, 112, 112, 112, 0, 114, 114, 114, 0, 115, 115, 115, 0, 116, 116, 116, 0, 117, 117, 117, 0, 118, 118, 118, 0, 119, 119, 119, 0, 120, 120, 120, 0, 122, 122, 122, 0, 123, 123, 123, 0, 124, 124, 124, 0, 125, 125, 125, 0, 126, 126, 126, 0, 127, 127, 127, 0, 129, 129, 129, 0, 130, 130, 130, 0, 131, 131, 131, 0, 132, 132, 132, 0, 133, 133, 133, 0, 134, 134, 134, 0, 136, 136, 136, 0, 137, 137, 137, 0, 138, 138, 138, 0, 139, 139, 139, 0, 140, 140, 140, 0, 141, 141, 141, 0, 143, 143, 143, 0, 144, 144, 144, 0, 145, 145, 145, 0, 146, 146, 146, 0, 147, 147, 147, 0, 148, 148, 148, 0, 150, 150, 150, 0, 151, 151, 151, 0, 152, 152, 152, 0, 153, 153, 153, 0, 154, 154, 154, 0, 155, 155, 155, 0, 157, 157, 157, 0, 158, 158, 158, 0, 159, 159, 159, 0, 160, 160, 160, 0, 161, 161, 161, 0, 162, 162, 162, 0, 164, 164, 164, 0, 165, 165, 165, 0, 166, 166, 166, 0, 167, 167, 167, 0, 168, 168, 168, 0, 169, 169, 169, 0, 171, 171, 171, 0, 172, 172, 172, 0, 173, 173, 173, 0, 174, 174, 174, 0, 175, 175, 175, 0, 176, 176, 176, 0, 178, 178, 178, 0, 179, 179, 179, 0, 180, 180, 180, 0, 181, 181, 181, 0, 182, 182, 182, 0, 183, 183, 183, 0, 185, 185, 185, 0, 186, 186, 186, 0, 187, 187, 187, 0, 188, 188, 188, 0, 189, 189, 189, 0, 190, 190, 190, 0, 192, 192, 192, 0, 193, 193, 193, 0, 194, 194, 194, 0, 195, 195, 195, 0, 196, 196, 196, 0, 197, 197, 197, 0, 199, 199, 199, 0, 200, 200, 200, 0, 201, 201, 201, 0, 202, 202, 202, 0, 203, 203, 203, 0, 204, 204, 204, 0, 205, 205, 205, 0, 207, 207, 207, 0, 208, 208, 208, 0, 209, 209, 209, 0, 210, 210, 210, 0, 211, 211, 211, 0, 212, 212, 212, 0, 214, 214, 214, 0, 215, 215, 215, 0, 216, 216, 216, 0, 217, 217, 217, 0, 218, 218, 218, 0, 219, 219, 219, 0, 221, 221, 221, 0, 222, 222, 222, 0, 223, 223, 223, 0, 224, 224, 224, 0, 225, 225, 225, 0, 226, 226, 226, 0, 228, 228, 228, 0, 229, 229, 229, 0, 230, 230, 230, 0, 231, 231, 231, 0, 232, 232, 232, 0, 233, 233, 233, 0, 235, 235, 235, 0, 236, 236, 236, 0, 237, 237, 237, 0, 238, 238, 238, 0, 239, 239, 239, 0, 240, 240, 240, 0, 242, 242, 242, 0, 243, 243, 243, 0, 244, 244, 244, 0, 245, 245, 245, 0, 246, 246, 246, 0, 247, 247, 247, 0, 249, 249, 249, 0, 250, 250, 250, 0, 251, 251, 251, 0, 252, 252, 252, 0, 253, 253, 253, 0, 254, 254, 254, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 36, 36, 36, 0, 36, 36, 36, 0, 36, 36, 36, 0, 36, 36, 36, 0, 36, 36, 36, 0, 36, 36, 36, 0, 36, 36, 36, 0, 36, 36, 36, 0, 36, 36, 36, 0, 36, 36, 36, 0, 36, 36, 36, 0, 36, 36, 36, 0, 36, 36, 36, 0, 36, 36, 36, 0, 36, 36, 36, 0, 36, 36, 36, 0, 36, 36, 36, 0, 37, 37, 37, 0, 38, 38, 38, 0, 39, 39, 39, 0, 41, 41, 41, 0, 42, 42, 42, 0, 43, 43, 43, 0, 44, 44, 44, 0, 45, 45, 45, 0, 46, 46, 46, 0, 48, 48, 48, 0, 49, 49, 49, 0, 50, 50, 50, 0, 51, 51, 51, 0, 52, 52, 52, 0, 53, 53, 53, 0, 55, 55, 55, 0, 56, 56, 56, 0, 57, 57, 57, 0, 58, 58, 58, 0, 59, 59, 59, 0, 60, 60, 60, 0, 62, 62, 62, 0, 63, 63, 63, 0, 64, 64, 64, 0, 65, 65, 65, 0, 66, 66, 66, 0, 67, 67, 67, 0, 69, 69, 69, 0, 70, 70, 70, 0, 71, 71, 71, 0, 72, 72, 72, 0, 73, 73, 73, 0, 74, 74, 74, 0, 76, 76, 76, 0, 77, 77, 77, 0, 78, 78, 78, 0, 79, 79, 79, 0, 80, 80, 80, 0, 81, 81, 81, 0, 83, 83, 83, 0, 84, 84, 84, 0, 85, 85, 85, 0, 86, 86, 86, 0, 87, 87, 87, 0, 88, 88, 88, 0, 90, 90, 90, 0, 91, 91, 91, 0, 92, 92, 92, 0, 93, 93, 93, 0, 94, 94, 94, 0, 95, 95, 95, 0, 97, 97, 97, 0, 98, 98, 98, 0, 99, 99, 99, 0, 100, 100, 100, 0, 101, 101, 101, 0, 102, 102, 102, 0, 104, 104, 104, 0, 105, 105, 105, 0, 106, 106, 106, 0, 107, 107, 107, 0, 108, 108, 108, 0, 109, 109, 109, 0, 111, 111, 111, 0, 112, 112, 112, 0, 113, 113, 113, 0, 114, 114, 114, 0, 115, 115, 115, 0, 116, 116, 116, 0, 118, 118, 118, 0, 119, 119, 119, 0, 120, 120, 120, 0, 121, 121, 121, 0, 122, 122, 122, 0, 123, 123, 123, 0, 124, 124, 124, 0, 126, 126, 126, 0, 127, 127, 127, 0, 128, 128, 128, 0, 129, 129, 129, 0, 130, 130, 130, 0, 131, 131, 131, 0, 133, 133, 133, 0, 134, 134, 134, 0, 135, 135, 135, 0, 136, 136, 136, 0, 137, 137, 137, 0, 138, 138, 138, 0, 140, 140, 140, 0, 141, 141, 141, 0, 142, 142, 142, 0, 143, 143, 143, 0, 144, 144, 144, 0, 145, 145, 145, 0, 147, 147, 147, 0, 148, 148, 148, 0, 149, 149, 149, 0, 150, 150, 150, 0, 151, 151, 151, 0, 152, 152, 152, 0, 154, 154, 154, 0, 155, 155, 155, 0, 156, 156, 156, 0, 157, 157, 157, 0, 158, 158, 158, 0, 159, 159, 159, 0, 161, 161, 161, 0, 162, 162, 162, 0, 163, 163, 163, 0, 164, 164, 164, 0, 165, 165, 165, 0, 166, 166, 166, 0, 168, 168, 168, 0, 169, 169, 169, 0, 170, 170, 170, 0, 171, 171, 171, 0, 172, 172, 172, 0, 173, 173, 173, 0, 175, 175, 175, 0, 176, 176, 176, 0, 177, 177, 177, 0, 178, 178, 178, 0, 179, 179, 179, 0, 180, 180, 180, 0, 182, 182, 182, 0, 183, 183, 183, 0, 184, 184, 184, 0, 185, 185, 185, 0, 186, 186, 186, 0, 187, 187, 187, 0, 189, 189, 189, 0, 190, 190, 190, 0, 191, 191, 191, 0, 192, 192, 192, 0, 193, 193, 193, 0, 194, 194, 194, 0, 196, 196, 196, 0, 197, 197, 197, 0, 198, 198, 198, 0, 199, 199, 199, 0, 200, 200, 200, 0, 201, 201, 201, 0, 203, 203, 203, 0, 204, 204, 204, 0, 205, 205, 205, 0, 206, 206, 206, 0, 207, 207, 207, 0, 208, 208, 208, 0, 209, 209, 209, 0, 211, 211, 211, 0, 212, 212, 212, 0, 213, 213, 213, 0, 214, 214, 214, 0, 215, 215, 215, 0, 216, 216, 216, 0, 218, 218, 218, 0, 219, 219, 219, 0, 220, 220, 220, 0, 221, 221, 221, 0, 222, 222, 222, 0, 223, 223, 223, 0, 225, 225, 225, 0, 226, 226, 226, 0, 227, 227, 227, 0, 228, 228, 228, 0, 229, 229, 229, 0, 230, 230, 230, 0, 232, 232, 232, 0, 233, 233, 233, 0, 234, 234, 234, 0, 235, 235, 235, 0, 236, 236, 236, 0, 237, 237, 237, 0, 239, 239, 239, 0, 240, 240, 240, 0, 241, 241, 241, 0, 242, 242, 242, 0, 243, 243, 243, 0, 244, 244, 244, 0, 246, 246, 246, 0, 247, 247, 247, 0, 248, 248, 248, 0, 249, 249, 249, 0, 250, 250, 250, 0, 251, 251, 251, 0, 253, 253, 253, 0, 254, 254, 254, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 40, 40, 40, 0, 40, 40, 40, 0, 40, 40, 40, 0, 40, 40, 40, 0, 40, 40, 40, 0, 40, 40, 40, 0, 40, 40, 40, 0, 40, 40, 40, 0, 40, 40, 40, 0, 40, 40, 40, 0, 40, 40, 40, 0, 40, 40, 40, 0, 40, 40, 40, 0, 40, 40, 40, 0, 40, 40, 40, 0, 40, 40, 40, 0, 40, 40, 40, 0, 41, 41, 41, 0, 42, 42, 42, 0, 43, 43, 43, 0, 45, 45, 45, 0, 46, 46, 46, 0, 47, 47, 47, 0, 48, 48, 48, 0, 49, 49, 49, 0, 50, 50, 50, 0, 52, 52, 52, 0, 53, 53, 53, 0, 54, 54, 54, 0, 55, 55, 55, 0, 56, 56, 56, 0, 57, 57, 57, 0, 59, 59, 59, 0, 60, 60, 60, 0, 61, 61, 61, 0, 62, 62, 62, 0, 63, 63, 63, 0, 64, 64, 64, 0, 66, 66, 66, 0, 67, 67, 67, 0, 68, 68, 68, 0, 69, 69, 69, 0, 70, 70, 70, 0, 71, 71, 71, 0, 73, 73, 73, 0, 74, 74, 74, 0, 75, 75, 75, 0, 76, 76, 76, 0, 77, 77, 77, 0, 78, 78, 78, 0, 80, 80, 80, 0, 81, 81, 81, 0, 82, 82, 82, 0, 83, 83, 83, 0, 84, 84, 84, 0, 85, 85, 85, 0, 87, 87, 87, 0, 88, 88, 88, 0, 89, 89, 89, 0, 90, 90, 90, 0, 91, 91, 91, 0, 92, 92, 92, 0, 94, 94, 94, 0, 95, 95, 95, 0, 96, 96, 96, 0, 97, 97, 97, 0, 98, 98, 98, 0, 99, 99, 99, 0, 101, 101, 101, 0, 102, 102, 102, 0, 103, 103, 103, 0, 104, 104, 104, 0, 105, 105, 105, 0, 106, 106, 106, 0, 108, 108, 108, 0, 109, 109, 109, 0, 110, 110, 110, 0, 111, 111, 111, 0, 112, 112, 112, 0, 113, 113, 113, 0, 115, 115, 115, 0, 116, 116, 116, 0, 117, 117, 117, 0, 118, 118, 118, 0, 119, 119, 119, 0, 120, 120, 120, 0, 122, 122, 122, 0, 123, 123, 123, 0, 124, 124, 124, 0, 125, 125, 125, 0, 126, 126, 126, 0, 127, 127, 127, 0, 128, 128, 128, 0, 130, 130, 130, 0, 131, 131, 131, 0, 132, 132, 132, 0, 133, 133, 133, 0, 134, 134, 134, 0, 135, 135, 135, 0, 137, 137, 137, 0, 138, 138, 138, 0, 139, 139, 139, 0, 140, 140, 140, 0, 141, 141, 141, 0, 142, 142, 142, 0, 144, 144, 144, 0, 145, 145, 145, 0, 146, 146, 146, 0, 147, 147, 147, 0, 148, 148, 148, 0, 149, 149, 149, 0, 151, 151, 151, 0, 152, 152, 152, 0, 153, 153, 153, 0, 154, 154, 154, 0, 155, 155, 155, 0, 156, 156, 156, 0, 158, 158, 158, 0, 159, 159, 159, 0, 160, 160, 160, 0, 161, 161, 161, 0, 162, 162, 162, 0, 163, 163, 163, 0, 165, 165, 165, 0, 166, 166, 166, 0, 167, 167, 167, 0, 168, 168, 168, 0, 169, 169, 169, 0, 170, 170, 170, 0, 172, 172, 172, 0, 173, 173, 173, 0, 174, 174, 174, 0, 175, 175, 175, 0, 176, 176, 176, 0, 177, 177, 177, 0, 179, 179, 179, 0, 180, 180, 180, 0, 181, 181, 181, 0, 182, 182, 182, 0, 183, 183, 183, 0, 184, 184, 184, 0, 186, 186, 186, 0, 187, 187, 187, 0, 188, 188, 188, 0, 189, 189, 189, 0, 190, 190, 190, 0, 191, 191, 191, 0, 193, 193, 193, 0, 194, 194, 194, 0, 195, 195, 195, 0, 196, 196, 196, 0, 197, 197, 197, 0, 198, 198, 198, 0, 200, 200, 200, 0, 201, 201, 201, 0, 202, 202, 202, 0, 203, 203, 203, 0, 204, 204, 204, 0, 205, 205, 205, 0, 207, 207, 207, 0, 208, 208, 208, 0, 209, 209, 209, 0, 210, 210, 210, 0, 211, 211, 211, 0, 212, 212, 212, 0, 213, 213, 213, 0, 215, 215, 215, 0, 216, 216, 216, 0, 217, 217, 217, 0, 218, 218, 218, 0, 219, 219, 219, 0, 220, 220, 220, 0, 222, 222, 222, 0, 223, 223, 223, 0, 224, 224, 224, 0, 225, 225, 225, 0, 226, 226, 226, 0, 227, 227, 227, 0, 229, 229, 229, 0, 230, 230, 230, 0, 231, 231, 231, 0, 232, 232, 232, 0, 233, 233, 233, 0, 234, 234, 234, 0, 236, 236, 236, 0, 237, 237, 237, 0, 238, 238, 238, 0, 239, 239, 239, 0, 240, 240, 240, 0, 241, 241, 241, 0, 243, 243, 243, 0, 244, 244, 244, 0, 245, 245, 245, 0, 246, 246, 246, 0, 247, 247, 247, 0, 248, 248, 248, 0, 250, 250, 250, 0, 251, 251, 251, 0, 252, 252, 252, 0, 253, 253, 253, 0, 254, 254, 254, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 44, 44, 44, 0, 44, 44, 44, 0, 44, 44, 44, 0, 44, 44, 44, 0, 44, 44, 44, 0, 44, 44, 44, 0, 44, 44, 44, 0, 44, 44, 44, 0, 44, 44, 44, 0, 44, 44, 44, 0, 44, 44, 44, 0, 44, 44, 44, 0, 44, 44, 44, 0, 44, 44, 44, 0, 44, 44, 44, 0, 44, 44, 44, 0, 44, 44, 44, 0, 45, 45, 45, 0, 46, 46, 46, 0, 47, 47, 47, 0, 49, 49, 49, 0, 50, 50, 50, 0, 51, 51, 51, 0, 52, 52, 52, 0, 53, 53, 53, 0, 54, 54, 54, 0, 56, 56, 56, 0, 57, 57, 57, 0, 58, 58, 58, 0, 59, 59, 59, 0, 60, 60, 60, 0, 61, 61, 61, 0, 63, 63, 63, 0, 64, 64, 64, 0, 65, 65, 65, 0, 66, 66, 66, 0, 67, 67, 67, 0, 68, 68, 68, 0, 70, 70, 70, 0, 71, 71, 71, 0, 72, 72, 72, 0, 73, 73, 73, 0, 74, 74, 74, 0, 75, 75, 75, 0, 77, 77, 77, 0, 78, 78, 78, 0, 79, 79, 79, 0, 80, 80, 80, 0, 81, 81, 81, 0, 82, 82, 82, 0, 84, 84, 84, 0, 85, 85, 85, 0, 86, 86, 86, 0, 87, 87, 87, 0, 88, 88, 88, 0, 89, 89, 89, 0, 91, 91, 91, 0, 92, 92, 92, 0, 93, 93, 93, 0, 94, 94, 94, 0, 95, 95, 95, 0, 96, 96, 96, 0, 98, 98, 98, 0, 99, 99, 99, 0, 100, 100, 100, 0, 101, 101, 101, 0, 102, 102, 102, 0, 103, 103, 103, 0, 105, 105, 105, 0, 106, 106, 106, 0, 107, 107, 107, 0, 108, 108, 108, 0, 109, 109, 109, 0, 110, 110, 110, 0, 112, 112, 112, 0, 113, 113, 113, 0, 114, 114, 114, 0, 115, 115, 115, 0, 116, 116, 116, 0, 117, 117, 117, 0, 119, 119, 119, 0, 120, 120, 120, 0, 121, 121, 121, 0, 122, 122, 122, 0, 123, 123, 123, 0, 124, 124, 124, 0, 126, 126, 126, 0, 127, 127, 127, 0, 128, 128, 128, 0, 129, 129, 129, 0, 130, 130, 130, 0, 131, 131, 131, 0, 132, 132, 132, 0, 134, 134, 134, 0, 135, 135, 135, 0, 136, 136, 136, 0, 137, 137, 137, 0, 138, 138, 138, 0, 139, 139, 139, 0, 141, 141, 141, 0, 142, 142, 142, 0, 143, 143, 143, 0, 144, 144, 144, 0, 145, 145, 145, 0, 146, 146, 146, 0, 148, 148, 148, 0, 149, 149, 149, 0, 150, 150, 150, 0, 151, 151, 151, 0, 152, 152, 152, 0, 153, 153, 153, 0, 155, 155, 155, 0, 156, 156, 156, 0, 157, 157, 157, 0, 158, 158, 158, 0, 159, 159, 159, 0, 160, 160, 160, 0, 162, 162, 162, 0, 163, 163, 163, 0, 164, 164, 164, 0, 165, 165, 165, 0, 166, 166, 166, 0, 167, 167, 167, 0, 169, 169, 169, 0, 170, 170, 170, 0, 171, 171, 171, 0, 172, 172, 172, 0, 173, 173, 173, 0, 174, 174, 174, 0, 176, 176, 176, 0, 177, 177, 177, 0, 178, 178, 178, 0, 179, 179, 179, 0, 180, 180, 180, 0, 181, 181, 181, 0, 183, 183, 183, 0, 184, 184, 184, 0, 185, 185, 185, 0, 186, 186, 186, 0, 187, 187, 187, 0, 188, 188, 188, 0, 190, 190, 190, 0, 191, 191, 191, 0, 192, 192, 192, 0, 193, 193, 193, 0, 194, 194, 194, 0, 195, 195, 195, 0, 197, 197, 197, 0, 198, 198, 198, 0, 199, 199, 199, 0, 200, 200, 200, 0, 201, 201, 201, 0, 202, 202, 202, 0, 204, 204, 204, 0, 205, 205, 205, 0, 206, 206, 206, 0, 207, 207, 207, 0, 208, 208, 208, 0, 209, 209, 209, 0, 211, 211, 211, 0, 212, 212, 212, 0, 213, 213, 213, 0, 214, 214, 214, 0, 215, 215, 215, 0, 216, 216, 216, 0, 217, 217, 217, 0, 219, 219, 219, 0, 220, 220, 220, 0, 221, 221, 221, 0, 222, 222, 222, 0, 223, 223, 223, 0, 224, 224, 224, 0, 226, 226, 226, 0, 227, 227, 227, 0, 228, 228, 228, 0, 229, 229, 229, 0, 230, 230, 230, 0, 231, 231, 231, 0, 233, 233, 233, 0, 234, 234, 234, 0, 235, 235, 235, 0, 236, 236, 236, 0, 237, 237, 237, 0, 238, 238, 238, 0, 240, 240, 240, 0, 241, 241, 241, 0, 242, 242, 242, 0, 243, 243, 243, 0, 244, 244, 244, 0, 245, 245, 245, 0, 247, 247, 247, 0, 248, 248, 248, 0, 249, 249, 249, 0, 250, 250, 250, 0, 251, 251, 251, 0, 252, 252, 252, 0, 254, 254, 254, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 48, 48, 48, 0, 48, 48, 48, 0, 48, 48, 48, 0, 48, 48, 48, 0, 48, 48, 48, 0, 48, 48, 48, 0, 48, 48, 48, 0, 48, 48, 48, 0, 48, 48, 48, 0, 48, 48, 48, 0, 48, 48, 48, 0, 48, 48, 48, 0, 48, 48, 48, 0, 48, 48, 48, 0, 48, 48, 48, 0, 48, 48, 48, 0, 48, 48, 48, 0, 49, 49, 49, 0, 50, 50, 50, 0, 51, 51, 51, 0, 53, 53, 53, 0, 54, 54, 54, 0, 55, 55, 55, 0, 56, 56, 56, 0, 57, 57, 57, 0, 58, 58, 58, 0, 60, 60, 60, 0, 61, 61, 61, 0, 62, 62, 62, 0, 63, 63, 63, 0, 64, 64, 64, 0, 65, 65, 65, 0, 67, 67, 67, 0, 68, 68, 68, 0, 69, 69, 69, 0, 70, 70, 70, 0, 71, 71, 71, 0, 72, 72, 72, 0, 74, 74, 74, 0, 75, 75, 75, 0, 76, 76, 76, 0, 77, 77, 77, 0, 78, 78, 78, 0, 79, 79, 79, 0, 81, 81, 81, 0, 82, 82, 82, 0, 83, 83, 83, 0, 84, 84, 84, 0, 85, 85, 85, 0, 86, 86, 86, 0, 88, 88, 88, 0, 89, 89, 89, 0, 90, 90, 90, 0, 91, 91, 91, 0, 92, 92, 92, 0, 93, 93, 93, 0, 95, 95, 95, 0, 96, 96, 96, 0, 97, 97, 97, 0, 98, 98, 98, 0, 99, 99, 99, 0, 100, 100, 100, 0, 102, 102, 102, 0, 103, 103, 103, 0, 104, 104, 104, 0, 105, 105, 105, 0, 106, 106, 106, 0, 107, 107, 107, 0, 109, 109, 109, 0, 110, 110, 110, 0, 111, 111, 111, 0, 112, 112, 112, 0, 113, 113, 113, 0, 114, 114, 114, 0, 116, 116, 116, 0, 117, 117, 117, 0, 118, 118, 118, 0, 119, 119, 119, 0, 120, 120, 120, 0, 121, 121, 121, 0, 123, 123, 123, 0, 124, 124, 124, 0, 125, 125, 125, 0, 126, 126, 126, 0, 127, 127, 127, 0, 128, 128, 128, 0, 130, 130, 130, 0, 131, 131, 131, 0, 132, 132, 132, 0, 133, 133, 133, 0, 134, 134, 134, 0, 135, 135, 135, 0, 136, 136, 136, 0, 138, 138, 138, 0, 139, 139, 139, 0, 140, 140, 140, 0, 141, 141, 141, 0, 142, 142, 142, 0, 143, 143, 143, 0, 145, 145, 145, 0, 146, 146, 146, 0, 147, 147, 147, 0, 148, 148, 148, 0, 149, 149, 149, 0, 150, 150, 150, 0, 152, 152, 152, 0, 153, 153, 153, 0, 154, 154, 154, 0, 155, 155, 155, 0, 156, 156, 156, 0, 157, 157, 157, 0, 159, 159, 159, 0, 160, 160, 160, 0, 161, 161, 161, 0, 162, 162, 162, 0, 163, 163, 163, 0, 164, 164, 164, 0, 166, 166, 166, 0, 167, 167, 167, 0, 168, 168, 168, 0, 169, 169, 169, 0, 170, 170, 170, 0, 171, 171, 171, 0, 173, 173, 173, 0, 174, 174, 174, 0, 175, 175, 175, 0, 176, 176, 176, 0, 177, 177, 177, 0, 178, 178, 178, 0, 180, 180, 180, 0, 181, 181, 181, 0, 182, 182, 182, 0, 183, 183, 183, 0, 184, 184, 184, 0, 185, 185, 185, 0, 187, 187, 187, 0, 188, 188, 188, 0, 189, 189, 189, 0, 190, 190, 190, 0, 191, 191, 191, 0, 192, 192, 192, 0, 194, 194, 194, 0, 195, 195, 195, 0, 196, 196, 196, 0, 197, 197, 197, 0, 198, 198, 198, 0, 199, 199, 199, 0, 201, 201, 201, 0, 202, 202, 202, 0, 203, 203, 203, 0, 204, 204, 204, 0, 205, 205, 205, 0, 206, 206, 206, 0, 208, 208, 208, 0, 209, 209, 209, 0, 210, 210, 210, 0, 211, 211, 211, 0, 212, 212, 212, 0, 213, 213, 213, 0, 215, 215, 215, 0, 216, 216, 216, 0, 217, 217, 217, 0, 218, 218, 218, 0, 219, 219, 219, 0, 220, 220, 220, 0, 221, 221, 221, 0, 223, 223, 223, 0, 224, 224, 224, 0, 225, 225, 225, 0, 226, 226, 226, 0, 227, 227, 227, 0, 228, 228, 228, 0, 230, 230, 230, 0, 231, 231, 231, 0, 232, 232, 232, 0, 233, 233, 233, 0, 234, 234, 234, 0, 235, 235, 235, 0, 237, 237, 237, 0, 238, 238, 238, 0, 239, 239, 239, 0, 240, 240, 240, 0, 241, 241, 241, 0, 242, 242, 242, 0, 244, 244, 244, 0, 245, 245, 245, 0, 246, 246, 246, 0, 247, 247, 247, 0, 248, 248, 248, 0, 249, 249, 249, 0, 251, 251, 251, 0, 252, 252, 252, 0, 253, 253, 253, 0, 254, 254, 254, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 52, 52, 52, 0, 52, 52, 52, 0, 52, 52, 52, 0, 52, 52, 52, 0, 52, 52, 52, 0, 52, 52, 52, 0, 52, 52, 52, 0, 52, 52, 52, 0, 52, 52, 52, 0, 52, 52, 52, 0, 52, 52, 52, 0, 52, 52, 52, 0, 52, 52, 52, 0, 52, 52, 52, 0, 52, 52, 52, 0, 52, 52, 52, 0, 52, 52, 52, 0, 53, 53, 53, 0, 54, 54, 54, 0, 55, 55, 55, 0, 57, 57, 57, 0, 58, 58, 58, 0, 59, 59, 59, 0, 60, 60, 60, 0, 61, 61, 61, 0, 62, 62, 62, 0, 64, 64, 64, 0, 65, 65, 65, 0, 66, 66, 66, 0, 67, 67, 67, 0, 68, 68, 68, 0, 69, 69, 69, 0, 71, 71, 71, 0, 72, 72, 72, 0, 73, 73, 73, 0, 74, 74, 74, 0, 75, 75, 75, 0, 76, 76, 76, 0, 78, 78, 78, 0, 79, 79, 79, 0, 80, 80, 80, 0, 81, 81, 81, 0, 82, 82, 82, 0, 83, 83, 83, 0, 85, 85, 85, 0, 86, 86, 86, 0, 87, 87, 87, 0, 88, 88, 88, 0, 89, 89, 89, 0, 90, 90, 90, 0, 92, 92, 92, 0, 93, 93, 93, 0, 94, 94, 94, 0, 95, 95, 95, 0, 96, 96, 96, 0, 97, 97, 97, 0, 99, 99, 99, 0, 100, 100, 100, 0, 101, 101, 101, 0, 102, 102, 102, 0, 103, 103, 103, 0, 104, 104, 104, 0, 106, 106, 106, 0, 107, 107, 107, 0, 108, 108, 108, 0, 109, 109, 109, 0, 110, 110, 110, 0, 111, 111, 111, 0, 113, 113, 113, 0, 114, 114, 114, 0, 115, 115, 115, 0, 116, 116, 116, 0, 117, 117, 117, 0, 118, 118, 118, 0, 120, 120, 120, 0, 121, 121, 121, 0, 122, 122, 122, 0, 123, 123, 123, 0, 124, 124, 124, 0, 125, 125, 125, 0, 127, 127, 127, 0, 128, 128, 128, 0, 129, 129, 129, 0, 130, 130, 130, 0, 131, 131, 131, 0, 132, 132, 132, 0, 134, 134, 134, 0, 135, 135, 135, 0, 136, 136, 136, 0, 137, 137, 137, 0, 138, 138, 138, 0, 139, 139, 139, 0, 140, 140, 140, 0, 142, 142, 142, 0, 143, 143, 143, 0, 144, 144, 144, 0, 145, 145, 145, 0, 146, 146, 146, 0, 147, 147, 147, 0, 149, 149, 149, 0, 150, 150, 150, 0, 151, 151, 151, 0, 152, 152, 152, 0, 153, 153, 153, 0, 154, 154, 154, 0, 156, 156, 156, 0, 157, 157, 157, 0, 158, 158, 158, 0, 159, 159, 159, 0, 160, 160, 160, 0, 161, 161, 161, 0, 163, 163, 163, 0, 164, 164, 164, 0, 165, 165, 165, 0, 166, 166, 166, 0, 167, 167, 167, 0, 168, 168, 168, 0, 170, 170, 170, 0, 171, 171, 171, 0, 172, 172, 172, 0, 173, 173, 173, 0, 174, 174, 174, 0, 175, 175, 175, 0, 177, 177, 177, 0, 178, 178, 178, 0, 179, 179, 179, 0, 180, 180, 180, 0, 181, 181, 181, 0, 182, 182, 182, 0, 184, 184, 184, 0, 185, 185, 185, 0, 186, 186, 186, 0, 187, 187, 187, 0, 188, 188, 188, 0, 189, 189, 189, 0, 191, 191, 191, 0, 192, 192, 192, 0, 193, 193, 193, 0, 194, 194, 194, 0, 195, 195, 195, 0, 196, 196, 196, 0, 198, 198, 198, 0, 199, 199, 199, 0, 200, 200, 200, 0, 201, 201, 201, 0, 202, 202, 202, 0, 203, 203, 203, 0, 205, 205, 205, 0, 206, 206, 206, 0, 207, 207, 207, 0, 208, 208, 208, 0, 209, 209, 209, 0, 210, 210, 210, 0, 212, 212, 212, 0, 213, 213, 213, 0, 214, 214, 214, 0, 215, 215, 215, 0, 216, 216, 216, 0, 217, 217, 217, 0, 219, 219, 219, 0, 220, 220, 220, 0, 221, 221, 221, 0, 222, 222, 222, 0, 223, 223, 223, 0, 224, 224, 224, 0, 225, 225, 225, 0, 227, 227, 227, 0, 228, 228, 228, 0, 229, 229, 229, 0, 230, 230, 230, 0, 231, 231, 231, 0, 232, 232, 232, 0, 234, 234, 234, 0, 235, 235, 235, 0, 236, 236, 236, 0, 237, 237, 237, 0, 238, 238, 238, 0, 239, 239, 239, 0, 241, 241, 241, 0, 242, 242, 242, 0, 243, 243, 243, 0, 244, 244, 244, 0, 245, 245, 245, 0, 246, 246, 246, 0, 248, 248, 248, 0, 249, 249, 249, 0, 250, 250, 250, 0, 251, 251, 251, 0, 252, 252, 252, 0, 253, 253, 253, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 56, 56, 56, 0, 56, 56, 56, 0, 56, 56, 56, 0, 56, 56, 56, 0, 56, 56, 56, 0, 56, 56, 56, 0, 56, 56, 56, 0, 56, 56, 56, 0, 56, 56, 56, 0, 56, 56, 56, 0, 56, 56, 56, 0, 56, 56, 56, 0, 56, 56, 56, 0, 56, 56, 56, 0, 56, 56, 56, 0, 56, 56, 56, 0, 56, 56, 56, 0, 57, 57, 57, 0, 58, 58, 58, 0, 59, 59, 59, 0, 61, 61, 61, 0, 62, 62, 62, 0, 63, 63, 63, 0, 64, 64, 64, 0, 65, 65, 65, 0, 66, 66, 66, 0, 68, 68, 68, 0, 69, 69, 69, 0, 70, 70, 70, 0, 71, 71, 71, 0, 72, 72, 72, 0, 73, 73, 73, 0, 75, 75, 75, 0, 76, 76, 76, 0, 77, 77, 77, 0, 78, 78, 78, 0, 79, 79, 79, 0, 80, 80, 80, 0, 82, 82, 82, 0, 83, 83, 83, 0, 84, 84, 84, 0, 85, 85, 85, 0, 86, 86, 86, 0, 87, 87, 87, 0, 89, 89, 89, 0, 90, 90, 90, 0, 91, 91, 91, 0, 92, 92, 92, 0, 93, 93, 93, 0, 94, 94, 94, 0, 96, 96, 96, 0, 97, 97, 97, 0, 98, 98, 98, 0, 99, 99, 99, 0, 100, 100, 100, 0, 101, 101, 101, 0, 103, 103, 103, 0, 104, 104, 104, 0, 105, 105, 105, 0, 106, 106, 106, 0, 107, 107, 107, 0, 108, 108, 108, 0, 110, 110, 110, 0, 111, 111, 111, 0, 112, 112, 112, 0, 113, 113, 113, 0, 114, 114, 114, 0, 115, 115, 115, 0, 117, 117, 117, 0, 118, 118, 118, 0, 119, 119, 119, 0, 120, 120, 120, 0, 121, 121, 121, 0, 122, 122, 122, 0, 124, 124, 124, 0, 125, 125, 125, 0, 126, 126, 126, 0, 127, 127, 127, 0, 128, 128, 128, 0, 129, 129, 129, 0, 131, 131, 131, 0, 132, 132, 132, 0, 133, 133, 133, 0, 134, 134, 134, 0, 135, 135, 135, 0, 136, 136, 136, 0, 138, 138, 138, 0, 139, 139, 139, 0, 140, 140, 140, 0, 141, 141, 141, 0, 142, 142, 142, 0, 143, 143, 143, 0, 144, 144, 144, 0, 146, 146, 146, 0, 147, 147, 147, 0, 148, 148, 148, 0, 149, 149, 149, 0, 150, 150, 150, 0, 151, 151, 151, 0, 153, 153, 153, 0, 154, 154, 154, 0, 155, 155, 155, 0, 156, 156, 156, 0, 157, 157, 157, 0, 158, 158, 158, 0, 160, 160, 160, 0, 161, 161, 161, 0, 162, 162, 162, 0, 163, 163, 163, 0, 164, 164, 164, 0, 165, 165, 165, 0, 167, 167, 167, 0, 168, 168, 168, 0, 169, 169, 169, 0, 170, 170, 170, 0, 171, 171, 171, 0, 172, 172, 172, 0, 174, 174, 174, 0, 175, 175, 175, 0, 176, 176, 176, 0, 177, 177, 177, 0, 178, 178, 178, 0, 179, 179, 179, 0, 181, 181, 181, 0, 182, 182, 182, 0, 183, 183, 183, 0, 184, 184, 184, 0, 185, 185, 185, 0, 186, 186, 186, 0, 188, 188, 188, 0, 189, 189, 189, 0, 190, 190, 190, 0, 191, 191, 191, 0, 192, 192, 192, 0, 193, 193, 193, 0, 195, 195, 195, 0, 196, 196, 196, 0, 197, 197, 197, 0, 198, 198, 198, 0, 199, 199, 199, 0, 200, 200, 200, 0, 202, 202, 202, 0, 203, 203, 203, 0, 204, 204, 204, 0, 205, 205, 205, 0, 206, 206, 206, 0, 207, 207, 207, 0, 209, 209, 209, 0, 210, 210, 210, 0, 211, 211, 211, 0, 212, 212, 212, 0, 213, 213, 213, 0, 214, 214, 214, 0, 216, 216, 216, 0, 217, 217, 217, 0, 218, 218, 218, 0, 219, 219, 219, 0, 220, 220, 220, 0, 221, 221, 221, 0, 223, 223, 223, 0, 224, 224, 224, 0, 225, 225, 225, 0, 226, 226, 226, 0, 227, 227, 227, 0, 228, 228, 228, 0, 229, 229, 229, 0, 231, 231, 231, 0, 232, 232, 232, 0, 233, 233, 233, 0, 234, 234, 234, 0, 235, 235, 235, 0, 236, 236, 236, 0, 238, 238, 238, 0, 239, 239, 239, 0, 240, 240, 240, 0, 241, 241, 241, 0, 242, 242, 242, 0, 243, 243, 243, 0, 245, 245, 245, 0, 246, 246, 246, 0, 247, 247, 247, 0, 248, 248, 248, 0, 249, 249, 249, 0, 250, 250, 250, 0, 252, 252, 252, 0, 253, 253, 253, 0, 254, 254, 254, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 60, 60, 60, 0, 60, 60, 60, 0, 60, 60, 60, 0, 60, 60, 60, 0, 60, 60, 60, 0, 60, 60, 60, 0, 60, 60, 60, 0, 60, 60, 60, 0, 60, 60, 60, 0, 60, 60, 60, 0, 60, 60, 60, 0, 60, 60, 60, 0, 60, 60, 60, 0, 60, 60, 60, 0, 60, 60, 60, 0, 60, 60, 60, 0, 60, 60, 60, 0, 61, 61, 61, 0, 62, 62, 62, 0, 63, 63, 63, 0, 65, 65, 65, 0, 66, 66, 66, 0, 67, 67, 67, 0, 68, 68, 68, 0, 69, 69, 69, 0, 70, 70, 70, 0, 72, 72, 72, 0, 73, 73, 73, 0, 74, 74, 74, 0, 75, 75, 75, 0, 76, 76, 76, 0, 77, 77, 77, 0, 79, 79, 79, 0, 80, 80, 80, 0, 81, 81, 81, 0, 82, 82, 82, 0, 83, 83, 83, 0, 84, 84, 84, 0, 86, 86, 86, 0, 87, 87, 87, 0, 88, 88, 88, 0, 89, 89, 89, 0, 90, 90, 90, 0, 91, 91, 91, 0, 93, 93, 93, 0, 94, 94, 94, 0, 95, 95, 95, 0, 96, 96, 96, 0, 97, 97, 97, 0, 98, 98, 98, 0, 100, 100, 100, 0, 101, 101, 101, 0, 102, 102, 102, 0, 103, 103, 103, 0, 104, 104, 104, 0, 105, 105, 105, 0, 107, 107, 107, 0, 108, 108, 108, 0, 109, 109, 109, 0, 110, 110, 110, 0, 111, 111, 111, 0, 112, 112, 112, 0, 114, 114, 114, 0, 115, 115, 115, 0, 116, 116, 116, 0, 117, 117, 117, 0, 118, 118, 118, 0, 119, 119, 119, 0, 121, 121, 121, 0, 122, 122, 122, 0, 123, 123, 123, 0, 124, 124, 124, 0, 125, 125, 125, 0, 126, 126, 126, 0, 128, 128, 128, 0, 129, 129, 129, 0, 130, 130, 130, 0, 131, 131, 131, 0, 132, 132, 132, 0, 133, 133, 133, 0, 135, 135, 135, 0, 136, 136, 136, 0, 137, 137, 137, 0, 138, 138, 138, 0, 139, 139, 139, 0, 140, 140, 140, 0, 142, 142, 142, 0, 143, 143, 143, 0, 144, 144, 144, 0, 145, 145, 145, 0, 146, 146, 146, 0, 147, 147, 147, 0, 148, 148, 148, 0, 150, 150, 150, 0, 151, 151, 151, 0, 152, 152, 152, 0, 153, 153, 153, 0, 154, 154, 154, 0, 155, 155, 155, 0, 157, 157, 157, 0, 158, 158, 158, 0, 159, 159, 159, 0, 160, 160, 160, 0, 161, 161, 161, 0, 162, 162, 162, 0, 164, 164, 164, 0, 165, 165, 165, 0, 166, 166, 166, 0, 167, 167, 167, 0, 168, 168, 168, 0, 169, 169, 169, 0, 171, 171, 171, 0, 172, 172, 172, 0, 173, 173, 173, 0, 174, 174, 174, 0, 175, 175, 175, 0, 176, 176, 176, 0, 178, 178, 178, 0, 179, 179, 179, 0, 180, 180, 180, 0, 181, 181, 181, 0, 182, 182, 182, 0, 183, 183, 183, 0, 185, 185, 185, 0, 186, 186, 186, 0, 187, 187, 187, 0, 188, 188, 188, 0, 189, 189, 189, 0, 190, 190, 190, 0, 192, 192, 192, 0, 193, 193, 193, 0, 194, 194, 194, 0, 195, 195, 195, 0, 196, 196, 196, 0, 197, 197, 197, 0, 199, 199, 199, 0, 200, 200, 200, 0, 201, 201, 201, 0, 202, 202, 202, 0, 203, 203, 203, 0, 204, 204, 204, 0, 206, 206, 206, 0, 207, 207, 207, 0, 208, 208, 208, 0, 209, 209, 209, 0, 210, 210, 210, 0, 211, 211, 211, 0, 213, 213, 213, 0, 214, 214, 214, 0, 215, 215, 215, 0, 216, 216, 216, 0, 217, 217, 217, 0, 218, 218, 218, 0, 220, 220, 220, 0, 221, 221, 221, 0, 222, 222, 222, 0, 223, 223, 223, 0, 224, 224, 224, 0, 225, 225, 225, 0, 227, 227, 227, 0, 228, 228, 228, 0, 229, 229, 229, 0, 230, 230, 230, 0, 231, 231, 231, 0, 232, 232, 232, 0, 233, 233, 233, 0, 235, 235, 235, 0, 236, 236, 236, 0, 237, 237, 237, 0, 238, 238, 238, 0, 239, 239, 239, 0, 240, 240, 240, 0, 242, 242, 242, 0, 243, 243, 243, 0, 244, 244, 244, 0, 245, 245, 245, 0, 246, 246, 246, 0, 247, 247, 247, 0, 249, 249, 249, 0, 250, 250, 250, 0, 251, 251, 251, 0, 252, 252, 252, 0, 253, 253, 253, 0, 254, 254, 254, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0};
static unsigned char __attribute__((aligned(16))) color_space_conversion_u_add[1024] = {0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 41, 0, 0, 0, 41, 0, 0, 0, 41, 0, 0, 0, 40, 0, 0, 0, 40, 0, 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 6, 0, 0, 0, 8, 0, 0, 0, 10, 0, 0, 0, 12, 0, 0, 0, 14, 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 20, 0, 0, 0, 22, 0, 0, 0, 24, 0, 0, 0, 26, 0, 0, 0, 28, 0, 0, 0, 30, 0, 0, 0, 32, 0, 0, 0, 34, 0, 0, 0, 36, 0, 0, 0, 38, 0, 0, 0, 40, 0, 0, 0, 42, 0, 0, 0, 44, 0, 0, 0, 46, 0, 0, 0, 48, 0, 0, 0, 50, 0, 0, 0, 52, 0, 0, 0, 54, 0, 0, 0, 56, 0, 0, 0, 58, 0, 0, 0, 61, 0, 0, 0, 63, 0, 0, 0, 65, 0, 0, 0, 67, 0, 0, 0, 69, 0, 0, 0, 71, 0, 0, 0, 73, 0, 0, 0, 75, 0, 0, 0, 77, 0, 0, 0, 79, 0, 0, 0, 81, 0, 0, 0, 83, 0, 0, 0, 85, 0, 0, 0, 87, 0, 0, 0, 89, 0, 0, 0, 91, 0, 0, 0, 93, 0, 0, 0, 95, 0, 0, 0, 97, 0, 0, 0, 99, 0, 0, 0, 101, 0, 0, 0, 103, 0, 0, 0, 105, 0, 0, 0, 107, 0, 0, 0, 109, 0, 0, 0, 111, 0, 0, 0, 113, 0, 0, 0, 115, 0, 0, 0, 117, 0, 0, 0, 119, 0, 0, 0, 121, 0, 0, 0, 123, 0, 0, 0, 125, 0, 0, 0, 127, 0, 0, 0, 129, 0, 0, 0, 131, 0, 0, 0, 133, 0, 0, 0, 135, 0, 0, 0, 137, 0, 0, 0, 139, 0, 0, 0, 141, 0, 0, 0, 143, 0, 0, 0, 145, 0, 0, 0, 147, 0, 0, 0, 149, 0, 0, 0, 151, 0, 0, 0, 153, 0, 0, 0, 155, 0, 0, 0, 157, 0, 0, 0, 159, 0, 0, 0, 161, 0, 0, 0, 163, 0, 0, 0, 165, 0, 0, 0, 167, 0, 0, 0, 169, 0, 0, 0, 171, 0, 0, 0, 173, 0, 0, 0, 175, 0, 0, 0, 178, 0, 0, 0, 180, 0, 0, 0, 182, 0, 0, 0, 184, 0, 0, 0, 186, 0, 0, 0, 188, 0, 0, 0, 190, 0, 0, 0, 192, 0, 0, 0, 194, 0, 0, 0, 196, 0, 0, 0, 198, 0, 0, 0, 200, 0, 0, 0, 202, 0, 0, 0, 204, 0, 0, 0, 206, 0, 0, 0, 208, 0, 0, 0, 210, 0, 0, 0, 212, 0, 0, 0, 214, 0, 0, 0, 216, 0, 0, 0, 218, 0, 0, 0, 220, 0, 0, 0, 222, 0, 0, 0, 224, 0, 0, 0, 226, 0, 0, 0, 226, 0, 0, 0, 226, 0, 0, 0, 226, 0, 0, 0, 226, 0, 0, 0, 226, 0, 0, 0, 226, 0, 0, 0, 226, 0, 0, 0, 226, 0, 0, 0, 226, 0, 0, 0, 226, 0, 0, 0, 226, 0, 0, 0, 226, 0, 0, 0, 226, 0, 0, 0, 226, 0, 0, 0, 226, 0};
static unsigned char __attribute__((aligned(16))) color_space_conversion_u_sub[1024] = {0, 0, 226, 0, 0, 0, 226, 0, 0, 0, 226, 0, 0, 0, 226, 0, 0, 0, 226, 0, 0, 0, 226, 0, 0, 0, 226, 0, 0, 0, 226, 0, 0, 0, 226, 0, 0, 0, 226, 0, 0, 0, 226, 0, 0, 0, 226, 0, 0, 0, 226, 0, 0, 0, 226, 0, 0, 0, 226, 0, 0, 0, 226, 0, 0, 0, 226, 0, 0, 0, 224, 0, 0, 0, 222, 0, 0, 0, 220, 0, 0, 0, 218, 0, 0, 0, 216, 0, 0, 0, 214, 0, 0, 0, 212, 0, 0, 0, 210, 0, 0, 0, 208, 0, 0, 0, 206, 0, 0, 0, 204, 0, 0, 0, 202, 0, 0, 0, 200, 0, 0, 0, 198, 0, 0, 0, 196, 0, 0, 0, 194, 0, 0, 0, 192, 0, 0, 0, 190, 0, 0, 0, 188, 0, 0, 0, 186, 0, 0, 0, 184, 0, 0, 0, 182, 0, 0, 0, 180, 0, 0, 0, 178, 0, 0, 0, 175, 0, 0, 0, 173, 0, 0, 0, 171, 0, 0, 0, 169, 0, 0, 0, 167, 0, 0, 0, 165, 0, 0, 0, 163, 0, 0, 0, 161, 0, 0, 0, 159, 0, 0, 0, 157, 0, 0, 0, 155, 0, 0, 0, 153, 0, 0, 0, 151, 0, 0, 0, 149, 0, 0, 0, 147, 0, 0, 0, 145, 0, 0, 0, 143, 0, 0, 0, 141, 0, 0, 0, 139, 0, 0, 0, 137, 0, 0, 0, 135, 0, 0, 0, 133, 0, 0, 0, 131, 0, 0, 0, 129, 0, 0, 0, 127, 0, 0, 0, 125, 0, 0, 0, 123, 0, 0, 0, 121, 0, 0, 0, 119, 0, 0, 0, 117, 0, 0, 0, 115, 0, 0, 0, 113, 0, 0, 0, 111, 0, 0, 0, 109, 0, 0, 0, 107, 0, 0, 0, 105, 0, 0, 0, 103, 0, 0, 0, 101, 0, 0, 0, 99, 0, 0, 0, 97, 0, 0, 0, 95, 0, 0, 0, 93, 0, 0, 0, 91, 0, 0, 0, 89, 0, 0, 0, 87, 0, 0, 0, 85, 0, 0, 0, 83, 0, 0, 0, 81, 0, 0, 0, 79, 0, 0, 0, 77, 0, 0, 0, 75, 0, 0, 0, 73, 0, 0, 0, 71, 0, 0, 0, 69, 0, 0, 0, 67, 0, 0, 0, 65, 0, 0, 0, 63, 0, 0, 0, 61, 0, 0, 0, 58, 0, 0, 0, 56, 0, 0, 0, 54, 0, 0, 0, 52, 0, 0, 0, 50, 0, 0, 0, 48, 0, 0, 0, 46, 0, 0, 0, 44, 0, 0, 0, 42, 0, 0, 0, 40, 0, 0, 0, 38, 0, 0, 0, 36, 0, 0, 0, 34, 0, 0, 0, 32, 0, 0, 0, 30, 0, 0, 0, 28, 0, 0, 0, 26, 0, 0, 0, 24, 0, 0, 0, 22, 0, 0, 0, 20, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 12, 0, 0, 0, 10, 0, 0, 0, 8, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 35, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 37, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 39, 0, 0, 0, 40, 0, 0, 0, 40, 0, 0, 0, 40, 0, 0, 0, 41, 0, 0, 0, 41, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0, 0, 44, 0, 0};
static unsigned char __attribute__((aligned(16))) color_space_conversion_v_add[1024] = {0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 90, 0, 0, 0, 90, 0, 0, 0, 89, 0, 0, 0, 88, 0, 0, 0, 87, 0, 0, 0, 86, 0, 0, 0, 86, 0, 0, 0, 85, 0, 0, 0, 84, 0, 0, 0, 83, 0, 0, 0, 82, 0, 0, 0, 81, 0, 0, 0, 81, 0, 0, 0, 80, 0, 0, 0, 79, 0, 0, 0, 78, 0, 0, 0, 77, 0, 0, 0, 77, 0, 0, 0, 76, 0, 0, 0, 75, 0, 0, 0, 74, 0, 0, 0, 73, 0, 0, 0, 73, 0, 0, 0, 72, 0, 0, 0, 71, 0, 0, 0, 70, 0, 0, 0, 69, 0, 0, 0, 68, 0, 0, 0, 68, 0, 0, 0, 67, 0, 0, 0, 66, 0, 0, 0, 65, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0, 0, 63, 0, 0, 0, 62, 0, 0, 0, 61, 0, 0, 0, 60, 0, 0, 0, 59, 0, 0, 0, 59, 0, 0, 0, 58, 0, 0, 0, 57, 0, 0, 0, 56, 0, 0, 0, 55, 0, 0, 0, 55, 0, 0, 0, 54, 0, 0, 0, 53, 0, 0, 0, 52, 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, 0, 50, 0, 0, 0, 49, 0, 0, 0, 48, 0, 0, 0, 47, 0, 0, 0, 46, 0, 0, 0, 46, 0, 0, 0, 45, 0, 0, 0, 44, 0, 0, 0, 43, 0, 0, 0, 42, 0, 0, 0, 42, 0, 0, 0, 41, 0, 0, 0, 40, 0, 0, 0, 39, 0, 0, 0, 38, 0, 0, 0, 38, 0, 0, 0, 37, 0, 0, 0, 36, 0, 0, 0, 35, 0, 0, 0, 34, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 32, 0, 0, 0, 31, 0, 0, 0, 30, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 28, 0, 0, 0, 27, 0, 0, 0, 26, 0, 0, 0, 25, 0, 0, 0, 25, 0, 0, 0, 24, 0, 0, 0, 23, 0, 0, 0, 22, 0, 0, 0, 21, 0, 0, 0, 20, 0, 0, 0, 20, 0, 0, 0, 19, 0, 0, 0, 18, 0, 0, 0, 17, 0, 0, 0, 16, 0, 0, 0, 16, 0, 0, 0, 15, 0, 0, 0, 14, 0, 0, 0, 13, 0, 0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 11, 0, 0, 0, 10, 0, 0, 0, 9, 0, 0, 0, 8, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 8, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 16, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 24, 0, 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 29, 0, 0, 0, 30, 0, 0, 0, 32, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 37, 0, 0, 0, 38, 0, 0, 0, 40, 0, 0, 0, 41, 0, 0, 0, 43, 0, 0, 0, 45, 0, 0, 0, 46, 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 51, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, 56, 0, 0, 0, 57, 0, 0, 0, 59, 0, 0, 0, 61, 0, 0, 0, 62, 0, 0, 0, 64, 0, 0, 0, 65, 0, 0, 0, 67, 0, 0, 0, 69, 0, 0, 0, 70, 0, 0, 0, 72, 0, 0, 0, 73, 0, 0, 0, 75, 0, 0, 0, 77, 0, 0, 0, 78, 0, 0, 0, 80, 0, 0, 0, 81, 0, 0, 0, 83, 0, 0, 0, 85, 0, 0, 0, 86, 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, 0, 91, 0, 0, 0, 93, 0, 0, 0, 94, 0, 0, 0, 96, 0, 0, 0, 97, 0, 0, 0, 99, 0, 0, 0, 101, 0, 0, 0, 102, 0, 0, 0, 104, 0, 0, 0, 105, 0, 0, 0, 107, 0, 0, 0, 109, 0, 0, 0, 110, 0, 0, 0, 112, 0, 0, 0, 113, 0, 0, 0, 115, 0, 0, 0, 117, 0, 0, 0, 118, 0, 0, 0, 120, 0, 0, 0, 121, 0, 0, 0, 123, 0, 0, 0, 124, 0, 0, 0, 126, 0, 0, 0, 128, 0, 0, 0, 129, 0, 0, 0, 131, 0, 0, 0, 132, 0, 0, 0, 134, 0, 0, 0, 136, 0, 0, 0, 137, 0, 0, 0, 139, 0, 0, 0, 140, 0, 0, 0, 142, 0, 0, 0, 144, 0, 0, 0, 145, 0, 0, 0, 147, 0, 0, 0, 148, 0, 0, 0, 150, 0, 0, 0, 152, 0, 0, 0, 153, 0, 0, 0, 155, 0, 0, 0, 156, 0, 0, 0, 158, 0, 0, 0, 160, 0, 0, 0, 161, 0, 0, 0, 163, 0, 0, 0, 164, 0, 0, 0, 166, 0, 0, 0, 168, 0, 0, 0, 169, 0, 0, 0, 171, 0, 0, 0, 172, 0, 0, 0, 174, 0, 0, 0, 176, 0, 0, 0, 177, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0};
static unsigned char __attribute__((aligned(16))) color_space_conversion_v_sub[1024] = {179, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 179, 0, 0, 0, 177, 0, 0, 0, 176, 0, 0, 0, 174, 0, 0, 0, 172, 0, 0, 0, 171, 0, 0, 0, 169, 0, 0, 0, 168, 0, 0, 0, 166, 0, 0, 0, 164, 0, 0, 0, 163, 0, 0, 0, 161, 0, 0, 0, 160, 0, 0, 0, 158, 0, 0, 0, 156, 0, 0, 0, 155, 0, 0, 0, 153, 0, 0, 0, 152, 0, 0, 0, 150, 0, 0, 0, 148, 0, 0, 0, 147, 0, 0, 0, 145, 0, 0, 0, 144, 0, 0, 0, 142, 0, 0, 0, 140, 0, 0, 0, 139, 0, 0, 0, 137, 0, 0, 0, 136, 0, 0, 0, 134, 0, 0, 0, 132, 0, 0, 0, 131, 0, 0, 0, 129, 0, 0, 0, 128, 0, 0, 0, 126, 0, 0, 0, 124, 0, 0, 0, 123, 0, 0, 0, 121, 0, 0, 0, 120, 0, 0, 0, 118, 0, 0, 0, 117, 0, 0, 0, 115, 0, 0, 0, 113, 0, 0, 0, 112, 0, 0, 0, 110, 0, 0, 0, 109, 0, 0, 0, 107, 0, 0, 0, 105, 0, 0, 0, 104, 0, 0, 0, 102, 0, 0, 0, 101, 0, 0, 0, 99, 0, 0, 0, 97, 0, 0, 0, 96, 0, 0, 0, 94, 0, 0, 0, 93, 0, 0, 0, 91, 0, 0, 0, 89, 0, 0, 0, 88, 0, 0, 0, 86, 0, 0, 0, 85, 0, 0, 0, 83, 0, 0, 0, 81, 0, 0, 0, 80, 0, 0, 0, 78, 0, 0, 0, 77, 0, 0, 0, 75, 0, 0, 0, 73, 0, 0, 0, 72, 0, 0, 0, 70, 0, 0, 0, 69, 0, 0, 0, 67, 0, 0, 0, 65, 0, 0, 0, 64, 0, 0, 0, 62, 0, 0, 0, 61, 0, 0, 0, 59, 0, 0, 0, 57, 0, 0, 0, 56, 0, 0, 0, 54, 0, 0, 0, 53, 0, 0, 0, 51, 0, 0, 0, 49, 0, 0, 0, 48, 0, 0, 0, 46, 0, 0, 0, 45, 0, 0, 0, 43, 0, 0, 0, 41, 0, 0, 0, 40, 0, 0, 0, 38, 0, 0, 0, 37, 0, 0, 0, 35, 0, 0, 0, 34, 0, 0, 0, 32, 0, 0, 0, 30, 0, 0, 0, 29, 0, 0, 0, 27, 0, 0, 0, 26, 0, 0, 0, 24, 0, 0, 0, 22, 0, 0, 0, 21, 0, 0, 0, 19, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0, 14, 0, 0, 0, 13, 0, 0, 0, 11, 0, 0, 0, 10, 0, 0, 0, 8, 0, 0, 0, 6, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, 15, 0, 0, 0, 16, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 19, 0, 0, 0, 19, 0, 0, 0, 20, 0, 0, 0, 21, 0, 0, 0, 22, 0, 0, 0, 23, 0, 0, 0, 23, 0, 0, 0, 24, 0, 0, 0, 25, 0, 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 27, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 33, 0, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 36, 0, 0, 0, 36, 0, 0, 0, 37, 0, 0, 0, 38, 0, 0, 0, 39, 0, 0, 0, 40, 0, 0, 0, 41, 0, 0, 0, 41, 0, 0, 0, 42, 0, 0, 0, 43, 0, 0, 0, 44, 0, 0, 0, 45, 0, 0, 0, 45, 0, 0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, 49, 0, 0, 0, 49, 0, 0, 0, 50, 0, 0, 0, 51, 0, 0, 0, 52, 0, 0, 0, 53, 0, 0, 0, 54, 0, 0, 0, 54, 0, 0, 0, 55, 0, 0, 0, 56, 0, 0, 0, 57, 0, 0, 0, 58, 0, 0, 0, 58, 0, 0, 0, 59, 0, 0, 0, 60, 0, 0, 0, 61, 0, 0, 0, 62, 0, 0, 0, 62, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 65, 0, 0, 0, 66, 0, 0, 0, 67, 0, 0, 0, 67, 0, 0, 0, 68, 0, 0, 0, 69, 0, 0, 0, 70, 0, 0, 0, 71, 0, 0, 0, 71, 0, 0, 0, 72, 0, 0, 0, 73, 0, 0, 0, 74, 0, 0, 0, 75, 0, 0, 0, 75, 0, 0, 0, 76, 0, 0, 0, 77, 0, 0, 0, 78, 0, 0, 0, 79, 0, 0, 0, 80, 0, 0, 0, 80, 0, 0, 0, 81, 0, 0, 0, 82, 0, 0, 0, 83, 0, 0, 0, 84, 0, 0, 0, 84, 0, 0, 0, 85, 0, 0, 0, 86, 0, 0, 0, 87, 0, 0, 0, 88, 0, 0, 0, 88, 0, 0, 0, 89, 0, 0, 0, 90, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0, 0, 91, 0, 0};


void *pmp_gu_draw_buffer;
void *pmp_gu_depth_buffer;
void *pmp_gu_y_buffer;
void *pmp_gu_u_buffer;
void *pmp_gu_v_buffer;


static unsigned int previous_aspect_ratio;
static unsigned int previous_zoom;


void pmp_gu_init_previous_values()
	{
	previous_aspect_ratio = 0xffffffff;
	previous_zoom         = 0xffffffff;
	}


void pmp_gu_init()
	{
	sceGuInit();
	sceGuStart(GU_DIRECT, pmp_gu_list);
	sceGuDrawBuffer(GU_PSM_8888, 0, 512);
	sceGuDispBuffer(480, 272, 0, 512);
	sceGuDepthBuffer((void *) (4 * 512 * 272), 512);
	sceGuOffset(2048 - (480 >> 1), 2048 - (272 >> 1));
	sceGuViewport(2048, 2048, 480, 272);
	sceGuDepthRange(0xffff, 0);
	sceGuScissor(0, 0, 480, 272);
	sceGuEnable(GU_SCISSOR_TEST);
	sceGuFrontFace(GU_CW);
	sceGuEnable(GU_TEXTURE_2D);
	sceGuClear(GU_DEPTH_BUFFER_BIT);
	sceGuFinish();
	sceGuSync(0, 0);


	pmp_gu_draw_buffer  = (void *) 0x4000000;
	pmp_gu_depth_buffer = pmp_gu_draw_buffer  + (4 *  512 * 272);
	pmp_gu_y_buffer     = pmp_gu_depth_buffer + (2 *  512 * 272);
	pmp_gu_u_buffer     = pmp_gu_y_buffer     + (    1024 * 512);
	pmp_gu_v_buffer     = pmp_gu_u_buffer     + (     512 * 256);


	memset(pmp_gu_y_buffer,   0, 1024 * 512);
	memset(pmp_gu_u_buffer, 128,  512 * 256);
	memset(pmp_gu_v_buffer, 128,  512 * 256);
	sceKernelDcacheWritebackInvalidateAll();
	}


void pmp_gu_end()
	{
	sceGuTerm();
	}


void pmp_gu_start()
	{
	sceGuStart(GU_DIRECT, pmp_gu_list);
	}


void pmp_gu_wait()
	{
	sceGuSync(0, 0);
	}


void pmp_gu_load_yuv(unsigned int width, unsigned int height, void *y, void *u, void *v, unsigned int y_width, unsigned int u_width, unsigned int v_width)
	{
	width   >>= 2;
	y_width >>= 2;
	u_width >>= 2;
	v_width >>= 2;


	sceGuCopyImage(GU_PSM_8888, 0, 0, width, height, y_width, y, 0, 0, 1024 >> 2, pmp_gu_y_buffer);
	sceGuTexSync();


	width  >>= 1;
	height >>= 1;


	sceGuCopyImage(GU_PSM_8888, 0, 0, width, height, u_width, u, 0, 0, 512 >> 2, pmp_gu_u_buffer);
	sceGuTexSync();
	sceGuCopyImage(GU_PSM_8888, 0, 0, width, height, v_width, v, 0, 0, 512 >> 2, pmp_gu_v_buffer);
	sceGuTexSync();
	}


static void pmp_gu_load_y(void *palette, void *plane, int filter)
	{
	sceGuDisable(GU_BLEND);
	sceGuClutMode(GU_PSM_8888, 0, 0xff, 0);
	sceGuClutLoad(32, palette);
	sceGuTexMode(GU_PSM_T8, 0, 0, 0);
	sceGuTexImage(0, 512, 512, 1024, plane);
	sceGuTexFunc(GU_TFX_REPLACE, GU_TCC_RGB);
	sceGuTexFilter(filter, filter);
	sceGuTexWrap(GU_CLAMP, GU_CLAMP);
	}


static void pmp_gu_load_uv(void *palette, void *plane, int operation)
	{
	sceGuEnable(GU_BLEND);
	sceGuBlendFunc(operation, GU_FIX, GU_FIX, 0xffffff, 0xffffff);
	sceGuClutMode(GU_PSM_8888, 0, 0xff, 0);
	sceGuClutLoad(32, palette);
	sceGuTexMode(GU_PSM_T8, 0, 0, 0);
	sceGuTexImage(0, 512, 256, 512, plane);
	sceGuTexFunc(GU_TFX_REPLACE, GU_TCC_RGB);
	sceGuTexFilter(GU_LINEAR, GU_LINEAR);
	sceGuTexWrap(GU_CLAMP, GU_CLAMP);
	}


static void pmp_gu_draw_sprite(struct texture_subdivision_struct *t, short texture_x_offset)
	{
	struct vertex_struct *v = sceGuGetMemory(2 * sizeof(struct vertex_struct));

	v[0].texture_x = t->output_texture_x_start + texture_x_offset;
	v[0].texture_y = t->output_texture_y_start;
	v[0].vertex_x  = (int) t->output_vertex_x_start;
	v[0].vertex_y  = t->output_vertex_y_start;
	v[0].vertex_z  = 0.0;

	v[1].texture_x = t->output_texture_x_end + texture_x_offset;
	v[1].texture_y = t->output_texture_y_end;
	v[1].vertex_x  = (int) t->output_vertex_x_end;
	v[1].vertex_y  = t->output_vertex_y_end;
	v[1].vertex_z  = 0.0;

	sceGuDrawArray(GU_SPRITES, GU_TEXTURE_16BIT | GU_VERTEX_32BITF | GU_TRANSFORM_2D, 2, 0, v);
	}


void pmp_gu_draw_yuv(unsigned int aspect_ratio, unsigned int zoom, unsigned int luminosity_boost, unsigned int show_interface, void *video_frame_buffer)
	{
	short texture_width  = aspect_ratios[0].width;
	short texture_height = aspect_ratios[0].height;

	int vertex_width  = aspect_ratios[aspect_ratio].psp_width;
	int vertex_height = aspect_ratios[aspect_ratio].psp_height;

	vertex_width  = zoom * vertex_width  / 100;
	vertex_height = zoom * vertex_height / 100;

	int vertex_x = (480 >> 1) - (vertex_width  >> 1);
	int vertex_y = (272 >> 1) - (vertex_height >> 1);

	int filter;
	if ((texture_width == vertex_width) && (texture_height == vertex_height))
		{
		filter = GU_NEAREST;
		}
	else
		{
		filter = GU_LINEAR;
		}




	if ((previous_aspect_ratio != aspect_ratio) || (previous_zoom != zoom))
		{
		sceGuClear(GU_COLOR_BUFFER_BIT);

		previous_aspect_ratio = aspect_ratio;
		previous_zoom         = zoom;
		}




	struct texture_subdivision_struct texture_subdivision;

	pmp_gu_load_y(color_space_conversion_y_put + (luminosity_boost << 10), pmp_gu_y_buffer, filter);
	texture_subdivision_constructor(&texture_subdivision, texture_width, texture_height, 16, vertex_width, vertex_height, vertex_x, vertex_y);
	do
		{
		texture_subdivision_get(&texture_subdivision);

		if (texture_subdivision.output_texture_x_start < 352)
			{
			pmp_gu_draw_sprite(&texture_subdivision, 0);
			}
		else
			{
			if (texture_subdivision.output_texture_x_start == 352)
				{
				pmp_gu_load_y(color_space_conversion_y_put + (luminosity_boost << 10), pmp_gu_y_buffer + 208, filter);
				}

			pmp_gu_draw_sprite(&texture_subdivision, -208);
			}
		}
	while (texture_subdivision.output_last == 0);




	texture_width  >>= 1;
	texture_height >>= 1;




	#define uv_texture_step 128


	pmp_gu_load_uv(color_space_conversion_u_add, pmp_gu_u_buffer, GU_ADD);
	texture_subdivision_constructor(&texture_subdivision, texture_width, texture_height, uv_texture_step, vertex_width, vertex_height, vertex_x, vertex_y);
	do
		{
		texture_subdivision_get(&texture_subdivision);
		pmp_gu_draw_sprite(&texture_subdivision, 0);
		}
	while (texture_subdivision.output_last == 0);


	pmp_gu_load_uv(color_space_conversion_u_sub, pmp_gu_u_buffer, GU_REVERSE_SUBTRACT);
	texture_subdivision_constructor(&texture_subdivision, texture_width, texture_height, uv_texture_step, vertex_width, vertex_height, vertex_x, vertex_y);
	do
		{
		texture_subdivision_get(&texture_subdivision);
		pmp_gu_draw_sprite(&texture_subdivision, 0);
		}
	while (texture_subdivision.output_last == 0);




	pmp_gu_load_uv(color_space_conversion_v_add, pmp_gu_v_buffer, GU_ADD);
	texture_subdivision_constructor(&texture_subdivision, texture_width, texture_height, uv_texture_step, vertex_width, vertex_height, vertex_x, vertex_y);
	do
		{
		texture_subdivision_get(&texture_subdivision);
		pmp_gu_draw_sprite(&texture_subdivision, 0);
		}
	while (texture_subdivision.output_last == 0);


	pmp_gu_load_uv(color_space_conversion_v_sub, pmp_gu_v_buffer, GU_REVERSE_SUBTRACT);
	texture_subdivision_constructor(&texture_subdivision, texture_width, texture_height, uv_texture_step, vertex_width, vertex_height, vertex_x, vertex_y);
	do
		{
		texture_subdivision_get(&texture_subdivision);
		pmp_gu_draw_sprite(&texture_subdivision, 0);
		}
	while (texture_subdivision.output_last == 0);




	if (show_interface == 0)
		{
		sceGuCopyImage(GU_PSM_8888, 0, 0, 480, 272, 512, pmp_gu_draw_buffer, 0, 0, 512, video_frame_buffer);
		sceGuTexSync();
		}
	sceGuFinish();
	}



struct aspect_ratio_struct aspect_ratios[number_of_aspect_ratios] =
	{
	{"Original",   640,   352, 480, 272},
	{"4 / 3",      4,   3, 0, 0},
	{"16 / 9",   480, 272, 0, 0},
	{"2.35",     235, 100, 0, 0}
	};


void aspect_ratio_struct_init(unsigned int width, unsigned int height)
	{
	aspect_ratios[0].width  = width;
	aspect_ratios[0].height = height;


	int i = 0;
	for (; i < number_of_aspect_ratios; i++)
		{
		// width / height > 480 / 272

		if (272 * aspect_ratios[i].width > 480 * aspect_ratios[i].height)
			{
			// height / width = psp_height / psp_width

			aspect_ratios[i].psp_width  = 480;
			aspect_ratios[i].psp_height = aspect_ratios[i].psp_width * aspect_ratios[i].height / aspect_ratios[i].width;
			}
		else
			{
			// width / height = psp_width / psp_height

			aspect_ratios[i].psp_height = 272;
			aspect_ratios[i].psp_width  = aspect_ratios[i].psp_height * aspect_ratios[i].width / aspect_ratios[i].height;
			}
		}
	}


